Sunteți pe pagina 1din 22

Probleme Atestat Informatică 2022-2023Subiecte PROGRAMARE ISJ Galați

SUBIECTE PROGRAMARE
An școlar 2022-2023

Subiectul nr 1
Se citește un numărnatural n și un șir de n numere. Să se afișezecâtenumerepalindromsuntînșir.
Exemplu:
n=5 șișirul232 96 88 12921 897 se va afișa 3
#include <iostream>
usingnamespacestd;
intmain()
{ intn,k,i,nr,inv;
cout<<"n=";cin>>n; //se citeste de la tastatura n
nr=0;
cout<<"Introduceti numerele din sir:";
for(i=1;i<=n;i++)
{cin>>k; //se citeste fiecare numar din sir
int aux=k;
inv=0;
while(aux>0)
{ inv=inv*10+aux%10; //construireainversului lui k
aux=aux/10; }
if(inv==k) nr++;
}
cout<<nr;
return 0 ;
}

Subiectul nr 2
Se dă un vector v cu n elemente de tip întreg (n<=100). Se cere să se determine celmai mare
divizorcomun al celor n numere.
Exemplu.:
n=8, v=[24, 12, 4, 2, 6, 8, 32, 46] cmmdc=2.
#include<iostream>
using namespace std;
int cmmdc(int a,int b)
{ while(b!=0)
{int r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{ int n, v[100], i, cm;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cm=v[1];
for(i=2;i<=n;i++)
cm=cmmdc(cm,v[i]);
cout<<cm;
return 0;}

Subiectul nr 3
Spunemcădouăcuvinterimează,dacăsufixele formate dinultimeletreicaracteresuntidentice. Să se
scrie un program care citeştedouăcuvinte a şi b şiverificădacăelerimeazăsau nu.
Exemplu:
Diana şi Liliana rimeaza,iarAncaşi Vasile nu rimează.
#include <iostream>
#include <string.h>
usingnamespacestd;
char x[41],y[41];
intok=0,nr,c,j;
intmain()
{
cin.get(x,41);
cin.get();
cin.get(y,41);
ok=1;
for(int i=strlen(x)-4, j=strlen(y)-4; i<strlen(x); i++, j++)
if(x[i]!=y[j])
ok=0;

if(ok==1)
cout<<"rimeaza";
elsecout<<"nu rimeaza";
return 0;
}

Subiectul nr 4
Se citește de la tastatură o matrice pătratică de dimensiune n (n≤20) cunumereîntregi. Să se
afişezeelementele de pediagonalaprincipală a matricei.
Exemplu:
pentru n=5 şimatricea

( )
5 −7 2 −9 7
−2 −4 −8 −9 4
1 −2 −3 4 1 se va afişa: 5 -4 -3 -1 6
−77 −33 5 −1 8
0 −6 −4 3 6
#include<iostream>
using namespace std;
int a[21][21], n, i, j;
int main()
{
cin>>n;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
cin>>a[i][j];
for(i=0; i<n; i++)
for(j=0; j<n; j++)
if(i==j)
cout<<a[i][j]<<" ";
}
}

Subiectul nr 5
Fişierul text nr1.txt conţine pe o singură linie, separate prin câte un spaţiu cel mult 1000 de
numere întregi, ordonate crescător, fiecare având cel mult 4 cifre, iar fişierul text nr2.txt conţine pe
o singură linie, separate prin câte un spaţiu cel mult 1000 de numere întregi, ordonate crescător,
fiecare având cel mult 4 cifre. Să se afișeze, pe ecran, în ordine crescătoare, multiplii lui 5 care se
află doar în unul dintre cele două fişiere.
Exemplu:
Dacă fisierul nr1.txt conţine numerele 1 2 3 4 7 20 60şi
fişierul nr2.txt conţine numerele 3 5 7 8 9 10 12 20 24se afişează pe ecran 5 10 60
#include<iostream>
#include<fstream>
usingnamespacestd;
inta,b,i,j,k,c[100],n,m;
ifstream f("nr1.txt");
ifstream g("nr2.txt");
intmain()
{
f>>a;
g>>b;
while(!f.eof()&&!g.eof())
{
if(a<b)
{
if(a%5==0)
cout<<a<<" ";
f>>a;
}
elseif(a>b)
{
if(b%5==0)
cout<<b<<" ";
g>>b;
}
else
{
f>>a;
g>>b;
}
}
while(!f.eof())
{
if(a%5==0)
cout<<a<<" ";
f>>a;
}
while(!g.eof())
{
if(b%5==0)
cout<<b<<" ";
g>>a;
}
f.close();
g.close();
return 0;
}

Subiectul nr 6
Se dă un vector v cu n elemente de tip întreg (n<=100). Se cere să se determine celmai mic
multiplucomun al lor.
Exemplu.:
n=4, v=[3, 2, 6, 7], cmmmc=42.
#include<iostream>
using namespace std;
int cmmdc(int a,int b)
{ while(b!=0)
{int r=a%b;
a=b;
b=r;
}
return a;
}
int cmmmc(int a,int b)
{ return a*b/cmmdc(a,b);}
int main()
{ int n, v[100], i, cm;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cm=cmmmc(v[1],v[2]);
for(i=3;i<=n;i++)
cm=cmmmc(cm,v[i]);
cout<<cm;
return 0;}

Subiectul nr 7
Înfişierulcuvant.in este memorat un șircumaxim 200 de caractere. Să se
afișezepeecrantoatecuvinteledinfişierul de intrare care începcu litera asauA. Dacă nu existăastfel
de cuvinte, se va afişamesajul NU EXISTA.
#include <iostream>
#include <string.h>
#include<fstream>
usingnamespacestd;
char x[201],*p;
int ok;
int main()
{
ifstream f("cuvant.in");
f.get(x,201);
p=strtok(x," ");
while(p)
{
if(p[0]=='a' || p[0]=='A')
{
cout<<p<<" ";
ok++;
}
p=strtok(NULL," ");
}
if(ok==0)
cout<<"NU EXISTA";
return 0;
}

Subiectul nr 8
Se citește un numărnatural n cumaxim 9 cifre. Să se formezecucifrele pare ale număruluicititcel
mai mare numărposibilșisă se afișeze.
Exemplu:
n=405889492 se va afișa 884420
#include <iostream>
usingnamespacestd;
int V[100];
intmain()
{ inti,u;
longlongn,nr=0;
cout<<"n=";cin>>n;
while (n!=0)
{ u=n%10;
V[u]++;
n=n/10;
}
for (i=8;i>=0;i-=2)
{while (V[i]!=0)
{nr=nr*10+i;
V[i]--;}
}
cout<<nr;
return 0;
}

Subiectul nr 9
Se citește de la tastatură o matrice cu m liniiși n coloane (m, n≤20) cunumereîntregi. Să se
calculezesumaelementelorimparedin matrice.
Exemplu:
pentru m=5 şi n=4 şimatricea

( )
5 −7 2 −9
−2 −4 −8 −9
1 −2 −3 4 se va afişa: -125
−77 −33 5 −1
0 −6 −4 3
#include <iostream>
usingnamespacestd;
int a[21][21], m, n, i, j, s;
intmain()
{
cin>>m>>n;
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
cin>>a[i][j];
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
if(a[i][j]%2==1|| a[i][j]%2==-1)
s=s+a[i][j];
cout<<s;
return 0;
}

Subiectul nr 10
Se citeştedinfişieruldate.in un textalcătuitdinmaxim 200 caracterelitere mari şimici ale
alfabetuluienglezşispaţii. Să se afișezepe prima linie a fișieruluidate.outnumărulvocalelordintext,
iarpeliniaurmătoaretextultransformatînmajuscule;
Exemplu:
Astazi nu ploua
Se va afișa 7
ASTAZI NU PLOUA
#include <iostream>
#include <string.h>
#include <fstream>
usingnamespacestd;
char x[201],voc[]="AEIOUaeiou";
int nr;
int main()
{
ifstream f("date.in");
ofstream g("date.out");
f.get(x,201);
for(int i=0;i<strlen(x);i++)
{if(strchr(voc,x[i])) nr++;
x[i]=toupper(x[i]);
}
g<<nr<<endl;
g<<x;
return 0;
}

Subiectul nr 11
Scrieţi programul care citeşte de la tastatură două numere naturale nenule n şi k (n≤100, k≤100)
şiafişează pe ecran, în ordine descrescătoare, cei mai mici k multipli naturali nenuli ai numărului
n. Numerele afişate sunt separate prin câte un spaţiu.
Exemplu:
pentru n=6 şi k=5 se afişează 30 24 18 12 6
#include <iostream>
usingnamespacestd;
intn,k,i;
intmain()
{ cout<<"n=";cin>>n; //citim n de la tastatura
cout<<"k=";cin>>k; //citim k de la tastatura
for(i=k;i>0;i--)
cout<<n*i<<" "; //afisare multiplilor
return 0;
}

Subiectul nr 12
Fişierul text atestat.in conţine pe o singurălinie, separate princâte un spaţiucelmult 1000 de
numereîntregi, ordonatecrescător, fiecareavândcelmult 4 cifre. Să se afişeze in
fişierulatestat.outfiecarenumăr distinct din fişier precum şi de câteoriapareacesta.
Exemplu:
Dacă fisierul atestat.in conţine numerele 12 12 13 13 13 100 350 350 899
Se va afişa în fişierulatestat.out: (12,2), (13,3) (100,1) (350,2) (899,1)
#include<fstream>
usingnamespacestd;
inta,b,c;
ifstream f("atestat.in");
ofstream g("atestat.out");
intmain()
{
f>>a;
c=1;
while(f>>b)
{
if(a==b)
c++;
else
{
g<<"("<<a<<","<<c<<"), ";
c=1;
}
a=b;
}
g<<"("<<a<<","<<c<<")";
f.close();
g.close();
return 0;
}

Subiectul nr 13
Se dă un vector v cu n elemente de tip întreg (n<=100), să se insereze un element dat x, pe pozitia
k în vector. Să se repeteoperația de m ori.
Exemplu.
n=5, v=[1, 2, 3, 4, 5], x=7, k=2, m=3, noul vector este v=[1, 7, 7, 7, 2, 3, 4, 5].
#include<iostream>
using namespace std;
int main()
{ int n, v[100], i, x, k, m, j;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cin>>x>>k>>m;
while(m!=0)
{ for(i=n+1;i>k;i--)
v[i]=v[i-1];
v[i]=x;
n++;
i++;
m--;}
for(i=1;i<=n;i++)
cout<<v[i]<<” “;
return 0;}

Subiectul nr 14
Se citesc de la tastaturăa și b,numerenaturalenenule. Să se determine ultima cifră a sumei
numerelor prime din intervalul [a,b].
Exemplu:
a=12 și b=34
se va afișa 2(13+17+19+23+29+31=132)
#include <iostream>
usingnamespacestd;
intmain()
{ inta,b,i,s=0,j,ok;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
for (i=a;i<=b;i++)
{ ok=1;
for (j=2;j<=i/2;j++)
if (i%j==0) ok=0;
if (ok==1) s=s+i;
}
cout<<s%10;
return 0;
}

Subiectul nr 15
Se citește de la tastatură o matrice pătratică de dimensiune n (n≤20) cunumereîntregi.Să se
afişezenumărulelementelorimpare de pe diagonalasecundară.
Exemplu:
pentru n=5 şimatricea

( )
5 −2 1 −7 7
0 −7 −4 −2 −3
3 −6 2 −8 −3 se va afişa: 2.
5 −4 −9 −9 4
−1 −3 5 7 8
#include<iostream>
using namespace std;
int a[21][21],m,n,i,j,nr;
int main()
{
cin>>n;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
cin>>a[i][j];
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
if(i+j==n+1)
if(a[i][j]%2==1 || a[i][j]%2==-1)
nr++;
cout<<nr;
return 0;
}

Subiectul nr 16
Scrieţi un program C++ care citeşte de la tastatură un text de maxim 200 caractere, format
dincuvinteseparateprintr-un spațiușiafișeazăacelecuvintedinșir care sunt formate numaidin vocale.
Textulconținecelpuțin un astfel de cuvânt.
Exemplu:
Ei au cumparat maimulte ii
se va afișaEi au ii
#include <iostream>
#include <string.h>
usingnamespacestd;
char x[201],voc[]="AEIOUaeiou",*p;
int ok;
intmain()
{
cin.get(x,201);
p=strtok(x," ");
while(p!=NULL)
{
ok=1;
for(int i=0; i<strlen(p); i++)
if(strchr(voc,p[i])==0) ok=0;
if(ok==1)
cout<<p<<" ";
p=strtok(NULL," ");
}
return 0;
}

Subiectul nr 17
Fişierul text atestat.in conţine pe prima linie un număr natural n şi pe următoarealinie, separate
princâte un spaţiu n numerenaturale, fiecareavândcelmult 4 cifre. Să se afişeze in
fişierulatestat.outultimele 2 numere prime din fişierul atestat.in.
Exemplu:
Dacă fisierul atestat.in conţine numerele
10
1 12 13 1 0 100 37 350 97 100
Se va afişa în fişierulatestat.out: 37 97
#include<iostream>
#include<fstream>
usingnamespacestd;
inta,b,x,i,ok,n;
ifstream f("atestat.in");
ofstream g("atestat.out");

intmain()
{f>>n;
while(f>>x)
{ok=1;
if(x<2)
ok=0;
for(i=2; i<=x/2; i++)
if(x%i==0)
ok=0;
if(ok)
{a=b;
b=x;
}
}
g<<a<<" "<<b;
f.close();
g.close();
return 0;
}

Subiectul nr 18
Un numărnaturalnenul se numeștep-numărdacă are aceiașiparitatecusumadivizorilorsăi.. Se
citeșten un numărnatural, să se verificedacăn este p-număr.
Exemplu:
n=25 se va afișaestep-număr, deoarece este p-număr are aceeașiparitatecu 31 (1+5+25=31)
n=15 se va afișanuestep-număr(1+3+5+15=24)
#include <iostream>
usingnamespacestd;
intmain()
{ intn,i,s=0;
cout<<"n=";cin>>n;
for (i=1;i<=n;i++)
if (n%i==0) s=s+i;
if (s%2==n%2) cout<<"este p-numar";
elsecout<<"nu este p-numar";
return 0;
}

Subiectul nr 19
Se dă un vector v cu n elemente de tip întreg (n<=100) și o cifră c. Se cere să se determine
frecvența de apariție a cifrei c întoateelementelevectorului v.
Exemplu.
n=6, v=[15, 25, 35, 4, 6, 75], c=5, nr. apariții k=4.
#include <iostream>
using namespace std;
int main()
{ int n, v[100], i, c, k, aux;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cin>>c;
k=0;
for(i=1;i<=n;i++)
{ aux=v[i];
while(aux)
{ if(aux%10==c) k++;
aux/=10;
}}
cout<<k;
return 0;}

Subiectul nr 20
Se citeşte o matrice cu m liniişi n coloane(m, n≤20) cunumerenaturale. Să se
afişezesumaelementelor prime din matrice.
Exemplu:pentru m=5 şi n=4 şimatricea

( )
5 12 10 7
72 30 13 6
2 8 34 15 se va afişa: 32.
4 9 9 4
1 0 5 75
#include<iostream>
using namespace std;
int a[21][21],m,n,i,j,s,ok,d;
int main()
{
cin>>m>>n;
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
cin>>a[i][j];
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
{
ok=1;
for(d=2; d<=a[i][j]/2; d++)
if(a[i][j]%d==0)
ok=0;
if(a[i][j]==1 || a[i][j]==0)
ok=0;
if(ok==1)
s=s+a[i][j];
}
cout<<s;
return 0;
}

Subiectul nr 21
Fișierulatestat.inconținepe prima linie un text de maxim 200 de caractereîn care
cuvintelesuntseparateprinunuldintrecaracterele„:;,. !?”.
Scrieți un program C++ care afișeazăpeecrantextuldinfișier, transformând prima literă a
fiecăruicuvântînmajusculă.
#include <iostream>
#include <string.h>
#include<ctype.h>
#include <fstream>
usingnamespacestd;
char x[201],*p,sep[]=" :;,.!?";
intnr,c;
int main()
{
ifstream f("atestat.in");
f.get(x,201);
x[0]=toupper(x[0]);
for(int i=0;i<strlen(x);i++)
{
if(strchr(sep,x[i]))
x[i+1]=toupper(x[i+1]);
}
cout<<x;
f.close();
return 0;
}

Subiectul nr 22
Se dă un vector v cu n elemente de tip întreg (n<=100) și o cifră c. Să se elimine din vectorul v
elementele care au pe pozițiaunitățilorcifra c, să se afișezevectorulrezultat.
Exemplu.
n=7, v=[32, 44, 54, 67, 4, 84, 9] , c=4,
vectorul după eliminare este v=[32, 67, 9].
#include <iostream>
using namespace std;
int main()
{ int n, v[100], i, c, j;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
for(i=1;i<=n;i++)
if(v[i]%10==c)
{ for(j=i;j<n;j++)
v[j]=v[j+1];
n--;
i--;
}
for(i=1;i<=n;i++)
cout<<v[i]<<” “;
return 0;}

Subiectul nr 23
Se citește un numărnaturalncumaxim 9 cifre. Să se verificedacătoatecifrelenumărului n
suntpareșisă se afișeze un mesajcorespunzător.
Exemplu:
pentru n=6822 se va afișa DA
pentru n=4618 se va afișa NU
#include <iostream>
usingnamespacestd;
intn,u,ok=0;
int main()
{ cout<<"n=";cin>>n; //se citeste n de la tastatura
while (n!=0 && n%10==2)
{u=n%10;
if (u%2==0) ok=1;
n=n/10; }
if (ok==1) cout<<"Da";
elsecout<<"Nu";
return 0;
}

Subiectul nr 24
Fişierul text atestat.in conţine pe prima linie un număr natural n şi pe următoarealinie, separate
princâte un spaţiu n numerenaturale, fiecareavândcelmult 4 cifre. Să se afişeze pe ecranprimele 2
numere prime din fişierul atestat.in.
Exemplu:
Dacă fisierul atestat.in conţine numerele
10
1 12 13 1 0 100 37 350 97 100
Se va afişa pe ecran: 13 37
#include<iostream>
#include<fstream>
usingnamespacestd;
inta,b,x,i,ok,n,c;
ifstream f("atestat.in");
intmain()
{f>>n;
while(f>>x&&c<2)
{ok=1;
if(x<2)
ok=0;
for(i=2; i<=x/2; i++)
if(x%i==0)
ok=0;
if(ok)
{a=b; b=x;
c++;
}
}
cout<<a<<" "<<b;
f.close();
return 0;
}

Subiectul nr 25
Se citește un cuvânt format din cel mult 20 de litere. Să se intershimbe prima jumătate acuvântului
cu cea de a doua.
Dacă cuvântul este format din număr impar de litere, atunci litera din mijloc va rămâne pe loc.
Exemple:
Cuvântul "cada" se transformăîn "daca", iar "alina" în "naial".
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[21],aux[11];
cin>>s;
int n=strlen(s);
strcpy(aux,s+(n+1)/2);
strncpy(s+(n+1)/2,s,n/2);
strncpy(s,aux,n/2);
cout<<s;
return 0;
}

Subiectul nr 26
Se citește un numărnatural n. Să se afișezenumerelenaturale mai micisauegalecu n, care
suntdivizibilecusumacifrelorlor.
Exemplu:
n=20 se va afisa 1 2 3 4 5 6 7 8 9 10 12 18 20
#include <iostream>
usingnamespacestd;
intmain()
{ intn,i,aux,s;
cout<<"n=";cin>>n; // se citeste de la tastură n
for(i=1;i<=n;i++)
{aux=i;
s=0;
while(aux>0)
{ s=s+aux%10;; // se calculeazasumacifrelor lui i
aux=aux/10;
}
if(i%s==0) cout<<i<<" ";
}
return 0;
}

Subiectul nr 27
Se dă un vector v cu n elemente de tip întreg (n<=100) și o cifră c. Să se elimine din
fiecarecomponentă a vectorului v cifra c, să se afișezevectorulrezultat. In cazulîn care
dupăeliminareacifreinumăruleste 0 să se elimine din vector.
Exemplu.
n=7, v=[32, 44, 54, 67, 4, 84, 9], c=4,
vectorul obținut este v=[32, 5, 67, 8, 9].
#include <iostream>
using namespace std;
int main()
{ int n, v[100], i, c, j, aux, nou,p;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cin>>c;
for(i=1;i<=n;i++)
{ aux=v[i]; nou=0; p=1;
while(aux)
{ if(aux%10!=c)
{ nou=nou+p*(aux%10);
p=p*10;
}
aux/=10;
}
if(nou)
v[i]=nou;
else
{ for(j=i;j<n;j++)
v[j]=v[j+1];
n--;
}
}
for(i=1;i<=n;i++)
cout<<v[i]<<” “;
return 0;
}

Subiectul nr 28
Se citeşte o matrice cu m liniişi n coloane (m, n≤20) cunumerenaturale. Să se
afişezeminimuldintremaximelefiecărei linii.
Exemplu:
pentru m=5 şi n=4 şimatricea

( )
5 12 10 7
72 30 13 6
2 8 34 15 se va afişa:9
4 9 9 4
1 0 5 75
#include<iostream>
using namespace std;
int a[21][21],m,n,i,j,maxi,mini;
int main()
{cin>>m>>n;
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
cin>>a[i][j];
mini=1000000;
for(i=1; i<=m; i++)
{maxi=a[i][1];
for(j=2; j<=n; j++)
if(a[i][j]>maxi)
maxi=a[i][j];
if(maxi<mini)
mini=maxi;
}
cout<<mini; return 0;
}

Subiectul nr 29
Scrieţiprogramul C++ care citeşte de la tastatură un şir de celmult 40 de caractere, format
doardinlitere ale alfabetuluienglez, şi care
afişeazăpeecrantoateşirurileobţinuteprineliminareasuccesivă a câteuneisingureliteredinşirulcitit.
Şirurile se vor afişacâteunulpecâte o linie a ecranului.
Exemplu:
dacă se citeşteşirulabcdatuncipeecran se va afişa: bcdacdabd abc
#include <iostream>
#include <string.h>
usingnamespacestd;
char x[41] ;
intnr,c;
int main()
{
cin>>x;
for(int i=0;i<strlen(x);i++)
{
for(int j=0;j<strlen(x);j++)
if(i!=j)
cout<<x[j];
cout<<endl;
}
return 0;
}

Subiectul nr 30
Fişierul text atestat.in conţine pe prima linie un număr natural n şi pe următoarealinie, separate
princâte un spaţiu n numereîntregi, fiecareavândcelmult 4 cifre. Să se afişeze in
fişierulatestat.outnumărul de elemente al celeimai lungi subsecvenţe de numereconsecutivcitite
care sunt egaleîntreele.
Exemplu:
Dacă fisierul atestat.in conţine numerele
16
1 12 13 13 13 1 0 100 37 37 350 97 100 100 100 100
Se va afişa în fişierulatestat.out: 4
#include<iostream>
#include<fstream>
usingnamespacestd;
inta,b,c,maxi,n;
ifstream f("atestat.in");
ofstream g("atestat.out");
intmain()
{f>>n;
f>>a;
while(f>>b)
{if(a==b)
c++;
else
{if(c>maxi)
maxi=c;
c=1;
}
a=b;
}
if(c>maxi)
maxi=c;
g<<maxi;
f.close();
g.close();
return 0;`
}

Subiectul nr 31
Se dă un vector v cu n elemente de tip întreg (n<=100) și o cifră c. Să se inserezeînfațafiecărui
element din vectorul v care are o singuracifră, cifra c. Să se afișezevectorulrezultat.
Exemplu.
n=7, v=[1, 23, 4, 5, 78, 89, 90], c=4, noul vector este v=[4, 1, 23, 4, 4, 4, 5, 78, 89, 90].
#include<iostream>
using namespace std;
int main()
{ int n, v[100], i, c, j;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cin>>c;
for(i=1;i<=n;i++)
if(v[i]>=0 && v[i]<=9)
{ for(j=n+1;j>i;j--)
v[j]=v[j-1];
v[i]=c;
n++;
i++;
}
for(i=1;i<=n;i++)
cout<<v[i]<<” “;
return 0;
}

Subiectul nr 32
Se citeşte o matrice cu m linii şi n coloane (numerotate de la 1, m, n≤20) cunumerenaturale. Să se
afişeze numerele de ordine ale coloanelor ce au toate elementele egale.
Exemplu:
pentru m=5 şi n=4 şimatricea

( )
5 12 10 7
72 12 13 7
2 12 34 7 se va afişa: 2 4.
4 12 19 7
1 12 5 7
#include<iostream>
usingnamespacestd;
int a[21][21],m,n,i,j,ok;
intmain()
{
cin>>m>>n;
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
cin>>a[i][j];
for(j=1; j<=n; j++)
{
ok=1;
for(i=2; i<=m; i++)
if(a[i][j]!=a[i-1][j])
ok=0;
if(ok==1)
cout<<j<<" ";
}
}

Subiectul nr 33
Se citeşte un şir de numere naturale, de cel mult patru cifre fiecare, pâna la întâlnirea numărului
123.Să se afişeze acele numere care au cifra de control impară.
Exemplu:
Pentruşirul de numere 12, 33, 128, 345, 123 se vorafişavalorile 12, 128.
#include <iostream>
using namespace std;
int main()
{ unsigned int x, aux,c;
cin>>x;
while(x!=123)
{
aux=x;
if(aux<=9) c=aux;
else if(aux%9!=0) c=aux%9;
else c=9;
if(c%2) cout<<x<<" ";
cin>>x;
}
return 0;}

Subiectul nr 34
Se daudoivectori x si y, fiecare cu n elementereale, n<=100, se cere să se determine un nou
vector z, în care elementele se determinăastfel: z[i]=max{x[1],x[2],….,x[i]}, dacă x[i]<y[i],
z[i]=max{min(x[1],x[2],….x[i]),0}, dacă x[i]=y[i] și z[i]=min{y[i],y[i+1],….y[n]}, dacă
x[i]>y[i]. Exemplu:
n=7, x=[4, 2, 7, 1, 9, 8, 10], y=[ 4, 6, 3, 5, 2, 8, 5] atunci z=[4, 6, 2, 7, 2, 1, 5].
#include <iostream>
using namespace std;
int main()
{ int n, i, j;
float x[100], y[100], z[100], mini, maxi;
cin>>n;
for(i=1;i<=n;i++)
cin>>x[i];
for(i=1;i<=n;i++)
cin>>y[i];
for(i=1;i<=n;i++)
if(x[i]<y[i])
{ maxi=x[1];
for(j=2;j<=i;j++)
if(maxi<x[j])
maxi=x[j];
z[i]=maxi;}
else
if(x[i]==y[i])
{ mini=x[1];
for(j=2;j<=i;j++)
if(mini>x[j])
mini=x[j];
maxi=0;
if(mini>maxi)
z[i]=mini;
else
z[i]=0;
}
else
{ mini=y[i];
for(j=i+1;j<=n;j++)
if( mini>y[j])
mini=y[j];
z[i]=mini;}
for(i=1;i<=n;i++)
cout<<z[i]<<” “;
return 0;}

Subiectul nr 35
Se citeşte un şir de caractere cu maxim 255 caractere, ce conţin cuvinte separate prin unul sau
mai multe spaţii. Cuvintele sunt formate doar din litere ale alfabetului englez. Scrieţi un program
C++ care citeşte un astfel de şirşiafişează numărul de spaţii existente, precum şi câte cuvinte
încep cu literă mică.
Exemplu:
pentru şirul„Elena calculează inversul unui Număr.” Se vor afişa 10(spaţii) şi 4.
#include <iostream>
#include<string.h>
usingnamespacestd;
intmain()
{ char s[70];
int ok=0,k=0,n,i, nr=0;
cin.get(s,70);
n=strlen(s); if(s[0]==' ') k++;
if(s[0]>='a'&& s[0]<='z') nr++;
for(int i=0;i<n;i++)
{if(s[i]==' ') k++;
if(s[i]>='a'&& s[i]<='z'&& s[i-1]==' ') nr++;}
if(!k)
cout<<"nu exista spatii";
elsecout<<k<<' ';
if(nr>0) cout<<nr;
return 0;}

Subiectul nr 36
Se citește un număr natural n. Afișați cifra maximă a lui n și de câte ori apare ea în numărul n. 
Exemplu:
pentru n=457170 se va afișa 7 2 (7 e cifra maxima si ea apare de 2 ori)
#include <iostream>
usingnamespacestd;
intmain()
{ intn,max=0,ap;
cin>>n;
if(n==0) cout<<"0 1";
else
{ while(n>0)
{if(n%10>max) {max=n%10; ap=1;}
elseif(n%10==max) ap++;
n=n/10;
}
cout<<max<<" "<<ap;
}
return 0;
}

Subiectul nr 37
Se citește un cuvânt s. Să se afișeze toate sufixele lui s în ordinea crescătoare a lungimii. 
Exemplu:
pentru s=alina , se vor afișa: 

na 
ina 
lina 
alina 
#include<iostream>
#include<string.h>
usingnamespacestd;
intmain()
{ char s[51];
int i;
cin>>s;
for(i=strlen(s)-1;i>=0;i--)
cout<<s+i<<endl;
return 0;
}

Subiectul nr 38
Fişierul text atestat.in conţine pe o singurălinie, separate princâte un spaţiucelmult 10000 de
numerenaturale, fiecareavândcelmult 9 cifre. Se cere afişarea pe ecran, înordinedescrescătoare, a
tuturorcifrelor care apar înnumerele din fişier.
Exemplu:
Dacă fisierul atestat.in conţine numerele 267 39628 79
Se va afişa pe ecran: 9987766322
#include <iostream>
#include <fstream>
usingnamespacestd;
intn,fr[10]= {0},p,i,bux,aux;
ifstream f("atestat.in");
intmain()
{while (f>>n)
while (n)
{
fr[n%10]++;
n/=10;
}
for (i=9; i>=0; i--)
while (fr[i])
{cout<<i;
fr[i]--;
}
f.close();
return 0;
}

Subiectul nr 39
Fişierul text atestat.in conţine pe o singurălinie, separate princâte un spaţiucelmult 10000 de
numerenaturale, fiecareavândcelmult 9 cifre. Se cere afişarea pe ecran, înordinecrescătoare, a
tuturorcifrelor care nu apar înnumerele din fişier, separate princâte un spaţiu.
Exemplu:
Dacă fisierul atestat.in conţine numerele 267 39628 79
Se va afişa pe ecran: 0 1 4 5
#include <iostream>
#include <fstream>
usingnamespacestd;
intn,fr[10]= {0},p,i,bux,aux;
ifstream f("atestat.in");
intmain()
{while (f>>n)
while (n)
{fr[n%10]++;
n/=10;
}
for (i=0; i<=9; i++)
if (fr[i]==0)
cout<<i<<" ";
f.close();
return 0;
}

Subiectul nr 40
Scrieți un program care citește de la tastatură un număr natural n (0<n<=23) și apoi construiește în
memorie o matrice cu n linii și n coloane astfel încât elementele situate pe diagonala secundară să
fie egale cu 2, cele situate deasupra diagonalei secundare să fie egale cu 1, iar cele situate sub
diagonala secundară să fie egale cu 3. Programul va afișa matricea pe ecran, câte o linie a matricei
pe o linie a ecranului, cu câte un spațiu între elementele fiecărei linii.
Exemplu:
dacă n este 4 atunci programul va construi și va afișa matricea alăturată.
1112
1123
1233
2333
#include<iostream>
usingnamespacestd;
intmain()
{ int a[23][23],n,i,j,c;
cout<<"n= ";cin>>n;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{ if(i+j<n+1)a[i][j]=1;
elseif (i+j==n+1)a[i][j]=2;
else a[i][j]=3;}
for(i=1; i<=n; i++)
{ for(j=1; j<=n; j++)
cout<<a[i][j]<<' ';
cout<<'\n';
}
return 0;
}

S-ar putea să vă placă și