Sunteți pe pagina 1din 16

}

1. Fişierul sir.in conţine pe prima linie un număr natural n 2. Fişierul numere.in conţine pe prima linie un număr
(2 < n < 100), iar pe a doua linie sunt n numere naturale natural n (1 < n < 1000), iar pe a doua linie este un şir de n
ordonate crescător. Pe linia a treia se află un număr natural numere naturale cuprinse între 1 şi 1.000.000. Se ştie că în
x. Să se scrie un program care memorează șirul într-un şir există cel puţin două valori distincte. Să se determine şi
vector și apoi inserează pe x astfel încât vectorul să rămână să se afişeze la ecran valoarea maximă şi valoarea imediat
ordonat crescător. Se va afișa apoi vectorul în fișierul mai mică decât maximul din şir.
sir.out. Exemplu:
Exemplu: numere.in
sir.in 6
6 88 123456 7 123456 992292 835
2 4 4 7 8 12 Se va afişa:
6 Valoare maxima: 992292
sir.out: Valoare imediat mai mica: 123456
2 4 4 6 7 8 12
COD
COD #include<iostream>
#include<iostream> #include<fstream>
#include<fstream> using namespace std;
using namespace std; ifstream f("intrare2.txt");
ifstream f("intrare.txt"); ofstream g("iesire2.txt");
ofstream g("iesire.txt"); int main()
int main() {
{ int i=1,n,v[100],nr,j,max=-1,min,max2=-1;
int n,v[100],i=1,nr,x=1,val,aux; f>>n;
f>>n; while(f>>nr)
while(i<=n) {
{ v[i]=nr;
f>>nr; if(v[i]>max)
v[i]=nr; {
i++; max=v[i];
} j=i;
f>>val; }
v[n+1]=val; i++;
for(int i=1;i<=n;i++) }
for(int j=i+1;j<=n+1;j++) g<<"Valoarea maxima: "<<max<<endl;
if(v[i]>v[j]) for(int i=1;i<=n;i++)
{ if(max-v[i]>max2)
aux=v[i]; max2=v[i];
v[i]=v[j]; g<<max2;
v[j]=aux; f.close();
} g.close();
for(int i=1;i<=n+1;i++) return 0;
g<<v[i]<<" "; }
f.close();
g.close();
3. Se citesc de la tastatură două numere naturale a şi b, f>>nr;
unde 1 < a < b < 10000. Să se afişeze în fişierul palin.txt while(nr!=0)
toate numerele palindrom din intervalul [a, b]. {
Exemplu: max=0;
a = 90, b = 130 while(nr!=0)
palin.txt {
99 101 111 121 if(nr%10>max)
max=nr%10;
COD nr=nr/10;
#include<iostream> }
#include<fstream> g<<max<<" ";
using namespace std; f>>nr;
ofstream g("iesire3.txt"); }
int main() f.close();
{ g.close();
int a,b,i,inv=0,aux; return 0;
cin>>a>>b; }
for(int i=a;i<=b;i++)
{ 5. Scrieţi un program care citeşte din fişierul cifre.in un
inv=0; număr natural nenul de maximum 1000 de cifre. Să se
aux=i; afişeze în cifre.out numărul maxim care se poate forma cu
if(aux!=0) cifrele numărului.
while(aux!=0) Exemplu:
{ cifre.in
inv=inv*10+aux%10; 1928192229
aux=aux/10; cifre.out
} 9998222211
if(i==inv)
g<<i<<" "; COD
} #include<iostream>
return 0; #include<fstream>
} using namespace std;
ifstream f("intrare5.txt");
4. Fişierul numere.in conţine mai multe numere naturale ofstream g("iesire5.txt");
cuprinse între 1 şi 1.000.000 şi care se termină cu 0 (zero) int main()
care nu face parte din şir. Să se afişeze în fişierul {
numere.out cifra maximă pentru fiecare număr din şir. char ch;
Exemplu: int fr[11],i,c,j,nr;
numere.in for(int i=0;i<=9;i++)
200 4563 5 457736 1996 100972 0 fr[i]=0;
numere.out f>>nr;
2 6 5 7 9 9 while(f>>ch)
fr[ch-48]++;
COD for(int i=9;i>=0;i--)
#include<iostream> if(fr[i]!=0)
#include<fstream> for(j=1;j<=fr[i];j++)
using namespace std; g<<i;
ifstream f("intrare4.txt"); f.close();
ofstream g("iesire4.txt"); g.close();
int main() return 0;
{ }
int nr,i,t,n,max;
6. Se citesc de la tastatură două numere naturale nenule a return 0;
şi b, unde a şi b sunt cuprinse între 1 şi 2.000.000.000. Să }
se afişeze la ecran numitorul şi numărătorul fracţiei
ireductibile a/b. 8. Se citeşte de la tastatură un număr natural n (10  n 
Exemplu: 1000000). Să se afişeze la ecran numărul numeror naturale
a = 15 b = 12 mai mici decât n şi prime cu n. Două numere sunt prime
Se va afişa: 5 4 între ele dacă cmmdc al lor este 1. De exemplu, 12 are 4
numere prime cu 12 și mai mici decât 12. Acestea sunt: 1,
COD 5, 7, 11.
#include<iostream>
using namespace std; COD
int main() #include<iostream>
{ using namespace std;
long a,b,nr1,nr2; int main()
cin>>a>>b; {
nr1=a; int n,a,b,x=0,i,v[100],j;
nr2=b; cin>>n;
while(a!=b) for(int i=n-1;i>=1;i--)
if(a>b) {
a=a-b; a=n;
else b=i;
b=b-a; while(a!=b)
cout<<nr1/a<<" "; {
cout<<nr2/a; if(a>b)
return 0; a=a-b;
} else
b=b-a;
7. Se citește de la tastatură un șir de cel mult 255 caractere }
format doar din litere mici. Să se afișeze la ecran prima if(a==1)
literă care apare o singură dată în șir. Dacă nu există o {x++;
astfel de literă se va afișa mesajul NU EXISTA. v[x]=i;}
Exemplu: }
ddemneaedn => se va afișa litera m cout<<"Nr numere: "<<x<<endl;
cout<<"Acestea sunt: ";
COD for(int j=1;j<=x;j++)
#include<iostream> cout<<v[j]<<" ";
#include<cstring> return 0;
using namespace std; }
int main()
{ 9. Se citeşte de la tastatură un număr natural n (10  n 
char s[256]; 10000). Să se descompună n în factori primi. Se vor afişa la
int fr[30]; ecran factorii şi puterile la care apar.
cin>>s; Exemplu:
for(int i=0;s[i]!=NULL;i++) n = 120
fr[s[i]-97]++; Se va afişa:
for(int i=0;i<=25;i++) 2 3
if(fr[i]==1) 3 1
{ 5 1
cout<<char(i+97);
return 0; COD
} #include<iostream>
cout<<"NU EXISTA"; using namespace std;
int main() c[k]=a[i];
{ i++;
int n,d,k; }
cin>>n; else
d=2; if(b[j]<=a[i])
while(n>1) {
{ k++;
k=0; c[k]=b[j];
while(n%d==0) j++;
{ }
k++; }
n=n/d; while(i<=n)
} {
if(k>0) k++;
cout<<d<<" "<<k<<endl; c[k]=a[i];
d=d+1; i++;
} }
} while(j<=m)
10. Fișierul numere.in conține pe prima linie numerele {
naturale n și m. Pe linia a doua sunt n numere naturale k++;
ordonate crescător, iar pe linia a treia se află m numere c[k]=b[j];
naturale ordonate crescător. Să se memoreze cele două j++;
șiruri în doi vectori a și b, apoi să se interclaseze șirurile în }
vectorul c. Se va afișa apoi vectorul c în fișierul for(int i=1;i<=k;i++)
numere.out. cout<<c[i]<<" ";
Exemplu: f.close();
numere.in g.close();
34 return 0;
258 }
1226
numere.out 11. Se citeşte de la tastatură un număr natural nenul n (10
1222568  n  1.000.000). Să se verifice dacă n poate fi scris ca
produs de exact două numere prime. Se va afișa la ecran
COD DA sau NU.
#include<iostream> Exemplu:
#include<fstream> n = 35
using namespace std; Se va afişa: DA (35=5*7)
ifstream f("intrare10.txt");
ofstream g("iesire10.txt"); COD
int main() #include<iostream>
{ using namespace std;
int n,m,i=1,j=1,k=0,a[100],b[100],c[100]; int main()
f>>n>>m; {
for(int i=1;i<=n;i++) int n,k,d,x=1,t=1,y=0,nr,v[100];
f>>a[i]; cin>>n;
for(int j=1;j<=m;j++) nr=n;
f>>b[j]; d=2;
while(i<=n && j<=m) while(n>1)
{ {
if(a[i]<=b[j]) k=0;
{ while(n%d==0)
k++; {
k++; {
n=n/d; int nr=v[i];
} while(nr%p==0)
if(k>0) cnt++,nr=nr/p;
for(int i=x;i<x+k;i++) }
v[i]=d; cout<<cnt;
d++; f.close();
x=x+k; return 0;
} }
while(t<=k)
{ 13. În fişierul numere.in se află pe prima linie un număr
for(int i=t+1;t<=k && y==0;t++) natural n (1 < n < 1.000.000), iar pe a doua linie n naturale
if(v[t]*v[i]==nr) de cel mult 2 cifre fiecare. Să se determine şi să se afişeze
{ la ecran numărul care se repetă cel mai des. Dacă sunt mai
y=1; multe numere care se repetă cel mai des, se va afişa numai
cout<<"DA unul dintre ele.
("<<v[t]<<"*"<<v[i]<<")"<<endl; Exemplu:
} numere.in
t++; 10
} 5 3 17 6 3 1 3 6 1 3
if(y==0) Se va afişa: Numărul care apare cel mai des este 3
cout<<"NU."<<endl;
return 0; COD
} #include<iostream>
#include<fstream>
12. Fişierul date.in conţine pe prima linie un număr natural using namespace std;
n (2  n  100), pe a doua linie n numere naturale x 1 x2 ... xn ifstream f("intrare13.txt");
cuprinse între 2 şi 1000, iar pe a treia linie un număr ofstream g("iesire13.txt");
natural p care este prim. Să se determine şi să se afişeze la int main()
ecran numărul natural k maxim cu proprietatea că produsul {
x1*x2*...*xn este divizibil cu pk. int fr[101],v[100],n,i,j,max=0,maxi=0;
Exemplu: for(int i=0;i<=99;i++)
date.in fr[i]=0;
5 f>>n;
512 12 999 23 888 for(int i=1;i<=n;i++)
2 {f>>v[i];
Se va afişa: k = 14 fr[v[i]]++;}
for(int i=1;i<=n;i++)
COD if(fr[v[i]]>max)
#include<iostream> {max=fr[v[i]];
#include<fstream> maxi=v[i];}
using namespace std; g<<"Numarul care apare cel mai des este "<<maxi;
ifstream f("date.in"); f.close();
int n,v[101],p; g.close();
int main() return 0;
{ }
f>>n;
for(int i=1;i<=n;i++) 14. În fişierul nume.in se află câte unul pe linie un nume. În
f>>v[i]; fişier sunt cel mult 100 de nume, fiecare de lungime
fin>>p; maximă 20. Să se afişeze în fişierul nume.out numele
int cnt=0; ordonate alfabetic.
for(int i=1;i<=n;i++) Exemplu
nume.in
Popovici 16. Fişierul numere.in conţine pe prima linie numărul
Albu natural n (2  n  25000), pe a doua linie un şir de n
Vasilache numere naturale cuprinse între 1 şi 1000, iar pe a treia linie
Dobrescu un număr natural x cuprins între 1 şi 1000. Să se memoreze
nume.out şirul într-un vector şi apoi să se elimine din acest vector
Albu toate elementele egale cu x. Vectorul rezultat va fi afişat în
Dobrescu fişierul numere.out.
Popovici Exemplu:
Vasilache numere.in
7
COD 5 3 3 999 3 67 24
#include<iostream> 3
#include<fstream> numere.out
using namespace std; 5 999 67 24
ifstream f("intrare14.txt");
ofstream g("iesire14.txt"); COD
int main() #include<iostream>
{ #include<fstream>
char nume[20]; using namespace std;
int n; ifstream f("intrare16.txt");
while(f.get(nume,20)) ofstream g("iesire16.txt");
f.close(); int main()
g.close(); {
return 0; int n,x,i,v[100];
} f>>n;
for(int i=1;i<=n;i++)
15. Se citeşte din fişierul text.in un şir de caractere format f>>v[i];
numai din litere mici. Să se afişeze la ecran numărul de f>>x;
vocale din text. for(int i=n;i>=1;i--)
Exemplu: {
text.in if(v[i]==x)
abcdeusdfoa {for(int j=i;j<n;j++)
Se va afişa: Numărul de vocale din text este 5 v[j]=v[j+1];
n--;}
COD }
#include<iostream> for(int i=1;i<=n;i++)
#include<fstream> g<<v[i]<<" ";
using namespace std; f.close();
ifstream f("text.in"); g.close();
char ch,voc[]="aeiou"; return 0;
int x=0; }
int main()
{ 17. Fişierul matrice.in conţine pe prima linie un număr
while(f>>ch) natural n (3  n  50) reprezentând numărul de linii şi
if(strchr(voc,ch)) coloane ale unei matrice pătratice, iar pe următoarele n
x++; linii este dată matricea. Să se calculeze şi să se afişeze la
cout<<x; ecran suma elementelor de sub diagonala principală a
f.close(); matricei.
g.close(); Exemplu:
return 0; matrice.in
} 4
1 2 3 4 int main()
2 3 4 5 {
3 4 5 6 int a[100][100],n,i,j,s=0,s1=0;
7 8 9 1 f>>n;
Se va afişa mesajul: Suma elementelor de sub diagonala for(int i=1;i<=n;i++)
principală este 33 for(int j=1;j<=n;j++)
f>>a[i][j];
COD for(int i=2;i<=n;i++)
#include<iostream> {
#include<fstream> for(int j=2;j<=n;j++)
using namespace std; if(i+j>n+1)
ifstream f("intrare17.txt"); s=s+a[i][j];
ofstream g("iesire17.txt"); }
int main() g<<s;
{ f.close();
int m[100][100],n,s=0; g.close();
f>>n; return 0;
for(int i=1;i<=n;i++) }
for(int j=1;j<=n;j++)
f>>m[i][j]; 19. Scrieţi un program care citeşte de la tastatură o frază
for(int i=1;i<=n;i++) de maximum 255 de caractere (litere mici ale alfabetului
for(int j=1;j<=n;j++) englez şi spaţii), ale cărei cuvinte sunt despărţite prin câte
if(i>j) spații şi afişează pe primul rând al ecranului numărul total
s=s+m[i][j]; al cuvintelor din frază.
g<<"Suma elementelor de sub diagonala principala Exemplu
este "<<s; ana are mere
f.close(); Se va afișa 3.
g.close();
return 0; COD
} #include<iostream>
#include<cstring>
18. Fişierul matrice.in conţine pe prima linie un număr using namespace std;
natural n (3  n  50) reprezentând numărul de linii şi char s[256];
coloane ale unei matrice pătratice, iar pe următoarele n int x=0;
linii este dată matricea. Să se calculeze şi să se afişeze la int main()
ecran suma elementelor de sub diagonala secundară a {
matricei. cin.get(s,256);
Exemplu: cin.get();
matrice.in int n=strlen(s);
4 s[n]=' ';
1 2 3 4 s[n+1]=NULL;
2 3 4 5 for(int i=0;s[i]!=NULL;i++)
3 4 5 6 if(s[i]!=' '&&s[i+1]==' ')
7 8 9 1 x++;
Se va afişa: 34 cout<<x;
return 0;
COD }
#include<iostream>
#include<fstream> 20. Scrieţi un program care citeşte de la tastatură un număr
using namespace std; natural n (n<=30), construieşte în memorie şi afişează pe
ifstream f("intrare18.txt"); ecran, matricea cu n linii şi n coloane, în care se vor
ofstream g("iesire18.txt");
memora în ordinea strict crescătoare a valorii, pe linii şi n=strlen(cuv)-1;
coloane, primele n2 numere naturale nenule pare. for(int i=n;i>=0;i--)
Exemplu: dacă n=4 se afişează: {
2468 inv[x]=cuv[i];
10 12 14 16 x++;
18 20 22 24 }
26 28 30 32 inv[x]=0;
if(strcmp(cuv,inv)==0)
COD cout<<"DA."<<endl;
#include<iostream> else
using namespace std; cout<<"NU."<<endl;
int main() f.close();
{ return 0;
int a[100][100],n,x=2; }
cin>>n;
for(int i=1;i<=n;i++) 22. Fişierul numere.in conţine pe prima linie numărul
{ natural n (2  n  5000), iar pe a doua linie un şir de n
for(int j=1;j<=n;j++) numere naturale x1 x2 ... xn. Să se determine cea mai lungă
{ secvenţă de elemente egale aflate pe poziţii consecutive în
a[i][j]=x; şir. Se va afişa la ecran poziţia de început a secvenţei şi
x=x+2; lungimea sa.
} Exemplu:
} numere.in
for(int i=1;i<=n;i++) 10
{ 2442223333
for(int j=1;j<=n;j++) Se va afişa: Poziţia de început este 7 iar lungimea este 4
cout<<a[i][j]<<" ";
cout<<endl; COD
} #include<iostream>
return 0; #include<fstream>
} using namespace std;
ifstream f("intrare22.txt");
21. Se citeşte din fişierul cuvant.in un şir de caractere int main()
format din litere mari şi mici. Să se verifice dacă şirul citit {
este sau nu palindrom. Se va afişa la ecran cuvântul DA sau int x=0,y=1,max=0,maxi=0,n,v[100],t;
NU după cum şirul este sau nu este palindrom. f>>n;
Exemplu: for(int i=1;i<=n;i++)
cuvant.in f>>v[i];
capac for(int i=1;i<n;i++)
Se va afişa: DA {
if(v[i]==v[i+1])
COD {
#include<iostream> y++;
#include<string.h> {if(x==0)
#include<fstream> x++;
using namespace std; t=i;}
ifstream f("intrare21.txt"); if(y>max)
int main() {max=y;
{ maxi=t;}
char cuv[20],inv[20]; }
int x=0,n; else
f>>cuv; {
x=0; rezultat să conțină valorile distincte din cele două șiruri.
y=1; Rezultatul se va scrie în fişierul siruri.out.
} Exemplu
} siruri.in
cout<<"Pozitia de inceput este "<<maxi<<" iar 4 5
lungimea este "<<max<<endl; 4 5 7 12
f.close(); 1 5 5 6 6
return 0; siruri.out
} 1 4 5 6 7 12

23. Se consideră o matrice cu n linii şi m coloane (n<30, COD


m<30), ce memorează numere întregi de cel mult 4 cifre #include<iostream>
fiecare. Scrieţi un program care citeşte de la tastatură #include<fstream>
valorile n, m şi elementele matricei şi care afişează pe using namespace std;
ecran, separate prin câte un spaţiu, valorile minime de pe ifstream f("intrare24.txt");
fiecare coloană, în ordine de la prima la ultima coloană. ofstream g("iesire24.txt");
Exemplu: int main()
34 {
2794 int j=0,i=0,m,n,a[100],b[100],c[200],k=0;
1823 f>>m>>n;
4952 for(int i=1;i<=m;i++)
Se va afișa: 1 7 2 2 f>>a[i];
for(int j=1;j<=n;j++)
COD f>>b[j];
#include<iostream> j=1;
#include<fstream> i=1;
using namespace std; while(i<=m && j<=n)
ifstream f("intrare23.txt"); {
int main() if(a[i]==b[j])
{ i++;
int n,m,a[100][100],min; if(a[i]<b[j])
f>>n>>m; {
for(int i=1;i<=n;i++) k++;
for(int j=1;j<=m;j++) c[k]=a[i];
f>>a[i][j]; i++;
for(int j=1;j<=m;j++) }
{ else
min=a[1][j]; {
for(int i=1;i<=n;i++) k++;
if(a[i][j]<min) c[k]=b[j];
min=a[i][j]; j++;
cout<<min<<" "; }
} }
f.close(); while(i<=m)
return 0; {
} if(c[k]!=a[i])
{
24. Fişierul şiruri.in conţine pe prima linie două numere k++;
naturale m şi n (1  m, n  1000), pe a doua linie un şir de c[k]=a[i];
m numere întregi x1 x2 ... xm, iar pe a treia linie n numere }
întregi y1 y2 ... yn. Cele două şiruri sunt ordonate crescător. i++;
Se cere să se interclaseze cele două şiruri astfel încât șirul }
while(j<=n) g.close();
{ return 0;
if(c[k]!=b[j]) }
{
k++; 26. Fişierul numere.in conţine pe prima linie numărul
c[k]=b[j]; natural n (2  n  1000), pe a doua linie un şir de n numere
} reale ordonat strict crescător, iar pe a treia linie un număr
j++; real x. Folosind căutarea binară, să se decidă dacă x apare
} sau nu în şir. Dacă x apare, se va afişa poziţia, iar dacă x nu
for(int i=1;i<=k;i++) apare se va tipări mesajul „x nu apare în şir”.
g<<c[i]<<" "; Exemplu:
f.close(); numere.in
g.close(); 6
return 0; 2 5.5 9.1 10 14.7 23
} 14.7
Se va afişa: 14.7 apare la poziţia 5
25. Un şir cu maximum 255 de caractere conţine cuvinte
separate prin unul sau mai multe spaţii. Cuvintele sunt COD
formate numai din litere mici ale alfabetului englez. Scrieţi #include<iostream>
un program care citeşte un astfel de şir de la tastatură şi îl #include<fstream>
afişează modificat, prima şi ultima literă a fiecărui cuvânt using namespace std;
fiind afişată ca literă mare. ifstream f("intrare26.txt");
Exemplu: ana are mere => AnA ArE MerE ofstream g("iesire26.txt");
int main()
COD {
#include<iostream> int n,y,t=0,i,m=0;
#include<string.h> float v[100],x;
#include<fstream> f>>n;
using namespace std; for(int i=1;i<=n;i++)
ifstream f("intrare25.txt"); f>>v[i];
ofstream g("iesire25.txt"); f>>x;
int main() i=1;
{ while(i<=n && m==0)
char sir[255]; {
int n; y=(i+n)/2;
f.get(sir,255); if(v[y]==x)
n=strlen(sir)-1; {
if(sir[0]>='a' && sir[0]<='z') t=y;
sir[0]=sir[0]-32; m=1;
else }
sir[0]=sir[0]; if(v[y]>x)
for(int i=1;i<=n-1;i++) n=y-1;
{ if(v[y]<x)
if(sir[i]>='a' && sir[i]<='z') i=y+1;
{if(sir[i-1]==' ' || sir[i+1]==' ') }
sir[i]=sir[i]-32;} cout<<x<<" apare pe pozitia "<<t;
} f.close();
if(sir[n]<='z' && sir[n]>='a') return 0;
sir[n]=sir[n]-32; }
for(int i=0;i<=n;i++)
g<<sir[i]; 27. Un şir cu maximum 255 de caractere conţine cuvinte
f.close(); separate prin câte un spaţiu. Cuvintele sunt formate numai
din litere mici ale alfabetului englez. Scrieţi un program a[i][j]=0;
care citeşte de la tastatură un astfel de şir S şi construiește for(int i=1;i<=n;i++)
un nou șir T care memorează cuvintele în ordine inversă. Se a[i][i]=2;
va afișa apoi T la ecran. for(int i=2;i<=n;i++)
Exemplu: S=ana are mere. Atunci T=mere are ana for(int j=1;j<i;j++)
a[i][j]=3;
COD for(int i=1;i<=n;i++)
#include<iostream> for(int j=n;j>i;j--)
#include<string.h> a[i][j]=1;
#include<fstream> for(int i=1;i<=n;i++)
using namespace std; {for(int j=1;j<=n;j++)
ifstream f("intrare27.txt"); cout<<a[i][j]<<" ";
ofstream g("iesire27.txt"); cout<<endl;}
int main() return 0;
{ }
char sir[255],b[]=" ",*p,cuv[255][20],sir2[255]="";
int k=0; 29. Din fişierul date.txt se citesc numerele naturale n şi m
f.get(sir,255); (0 < m < n < 5000) de pe prima linie, apoi n numere
p=strtok(sir,b); naturale a1, a2, …, an de pe linia a doua şi apoi m numere
while(p) naturale b1, b2, …, bm de pe linia a treia a fişierului. Să se
{ verifice dacă şirul b citit de pe a treia linie a fişierului se
k++; poate obţine din şirul a (aflat pe a doua linie a fişierului)
strcpy(cuv[k],p); prin eliminarea unora dintre componentele şirului a. Se va
p=strtok(NULL,b); afişa la ecran mesajul DA sau NU.
} Exemple:
for(int i=k;i>=1;i--) date.txt
{ 5 3
strcat(sir2,cuv[i]); 1 6 3 1 3
strcat(sir2,b); 6 1 3
} Se va afişa: DA
g<<sir2;
f.close(); date.txt
g.close(); 4 2
return 0; 2 9 7 3
} 3 9
Se va afişa: NU
28. 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 COD
matrice cu n linii şi n coloane astfel încât elementele #include<iostream>
situate pe diagonala principală sa fie egale cu 2, cele #include<fstream>
situate deasupra diagonalei principale să fie egale cu 1, iar using namespace std;
cele situate sub diagonala principală să fie egale cu 3. ifstream f("intrare29.txt");
int main()
COD {
#include<iostream> int n,m,a[100],b[100],j,v=0,x=0,k=0,aux,c[100],y=0;
using namespace std; f>>n>>m;
int main() aux=n;
{ for(int i=1;i<=n;i++)
int n,a[100][100],i,j; f>>a[i];
cin>>n; for(int j=1;j<=m;j++)
for(int i=1;i<=n;i++) f>>b[j];
for(int j=1;j<=n;j++) j=1;
while(j<=m) else
{ cout<<"NU"<<endl;
k=0; return 0;
for(int i=x;i<=n && k==0;i++) }
if(a[i]==b[j])
{ 31. Se citeşte de la tastatură un şir de cel mult 40 de
v++; caractere, format doar din litere mici. Să se afişeze pe
c[v]=a[i]; ecran toate şirurile obţinute prin eliminarea succesivă a
x=i; câte unei singure litere din şirul citit, ca în exemplu. Şirurile
for(int i=x;i<=n-1;i++) obţinute se vor afişa câte unul pe câte o linie a ecranului.
a[i]=a[i+1]; Exemplu: dacă se citeşte şirul abbc atunci pe ecran se va
n--; afişa:
k=1; bbc
} abc
j++; abc
} abb
if(v==m)
for(int i=1;i<=v;i++) COD
if(b[i]==c[i]) #include<iostream>
y++; #include<string.h>
if(y==v) using namespace std;
cout<<"DA."; int main()
else {
cout<<"NU."; char sir[255];
f.close(); int i,k=0,n;
return 0; cin>>sir;
} n=strlen(sir)-1;
while(k<=n)
30. Se citeşte de la tastatură un număr natural k (1  k  {
1.000.000.000). Scrieţi un program care verifică dacă n este for(int i=0;i<=n;i++)
termen al şirului Fibonacci (acest şir se construieşte prin if(i!=k)
recurenţa: f1=1, f2=1, fn=fn-1+fn-2, pentru n>2). Se va afişa la cout<<sir[i];
ecran un mesaj. cout<<endl;
Exemplu: k++;
k = 13 }
Se va afişa: 13 este termen al sirului Fibonacci return 0;
}
COD
#include<iostream> 32. Se citeşte de la tastatură un număr natural n (1 < n <
using namespace std; 1.000.000). Se cere să se scrie n ca sumă de puteri ale lui 2.
int main() Se vor afişa la ecran exponenţii din descompunere.
{ Exemplu:
int n,k,f1=0,f2=1,f3=0,s=0; n = 100
cin>>k; Se va afişa: 6 5 2 (pentru că 100 = 26 + 25 + 22)
while(s<k)
{ COD
s=f1+f2; #include<iostream>
f1=f2; #include<math.h>
f2=s; using namespace std;
} int exp(int n)
if(s==k) {
cout<<"DA"<<endl; int x=0,max=0,k=0,maxk=0;
while(x<n) int main()
{ {
x=pow(2,k); int n,m,p,a[100],b[100],c[100],x=0,y=0;
if(x<=n) f>>m>>n>>p;
{if(x>max) for(int i=1;i<=m;i++)
{ f>>a[i];
maxk=k; for(int j=1;j<=n;j++)
max=x; f>>b[j];
}} for(int k=1;k<=p;k++)
k++; f>>c[k];
} for(int i=1;i<=m;i++)
return maxk; {
} for(int j=1;j<=n;j++)
int main() if(a[i]==b[j])
{ {
int n,s=0,aux=0,i=0,t=0,v[100]; for(int k=1;k<=p;k++)
cin>>n; if(c[k]==b[j])
aux=n; {
while(s<aux) cout<<c[k]<<": "<<i<<"
{ "<<j<<" "<<k<<endl;
i=exp(n); }
cout<<i<<" "; }
s=s+pow(2,i); }
n=aux-s; return 0;
} }
return 0;
} 34. Un cuvânt s, de cel mult 250 caractere, format doar din
litere mici, conţine cel puţin o consoană. Scrieţi programul
33. Fişierul siruri.in conţine pe prima linie trei numere care citeşte de la tastatură cuvântul s, construieşte în
naturale m, n, p (2  m, n, p  1000), pe a doua linie un şir memorie şi afişează pe ecran cuvântul obţinut prin
de m numere naturale, pe a treia linie un şir de n numere eliminarea tuturor vocalelor din cuvântul s. Vocală este
naturale, iar pe ultima linie un şir de p numere naturale. Se oricare literă care se află în mulţimea {a, e, i, o, u}.
ştie că cele trei şiruri sunt scrise în ordine strict crescătoare
în fişier şi că au cel puţin un număr comun. Scrieţi un COD
program care afişează la ecran un număr comun celor 3 #include<iostream>
şiruri şi poziţiile pe care apare acesta. #include<string.h>
Exemplu: using namespace std;
siruri.in int main()
325 {
2 7 20 char sir[255],voc[]="aeiou";
7 45 int n,j;
1 2 5 7 20 cin>>sir;
Se va afişa: n=strlen(sir)-1;
Valoare comuna: 7 for(int i=n;i>=0;i--)
Pozitiile pe care apare in cele trei siruri: 2 1 4 {
if(strchr(voc,sir[i])!=0)
COD {
#include<iostream> for(int j=i;j<n;j++)
#include<fstream> sir[j]=sir[j+1];
using namespace std; sir[n]=NULL;
ifstream f("intrare33.txt"); n--;
ofstream g("iesire33.txt"); }
} char cuv[255];
cout<<sir; cin>>cuv;
return 0; n=strlen(cuv)-1;
} while(k<=n)
{
35. Scrieţi programul care citeşte de la tastatură un şir cu for(int i=0;i<=k;i++)
cel mult 200 de caractere litere mici şi care determină cout<<cuv[i];
transformarea acestuia prin înlocuirea fiecărei litere cu cout<<endl;
următoarea din alfabet (adică a trece în b, b trece în c, …, z k++;
trece în a). Programul va afişa pe ecran şirul obţinut. }
Exemplu: zadar => abebs return 0;
}
COD
#include<iostream> 36. Se citește de la tastatură un număr natural n de cel
#include<string.h> mult 9 cifre. Să se construiască în memorie o matrice cu m
using namespace std; linii și m coloane, unde m este numărul cifrelor lui n. Pe
int main() prima coloană se va memora cifra unităților lui n, pe a doua
{ coloană cifra zecilor lui n ș.a.m.d.
char sir[255]; Exemplu: n=1430
int n,i; 0341
cin>>sir; 0341
n=strlen(sir)-1; 0341
for(int i=0;i<=n;i++) 0341
{
if(sir[i]=='z') COD
sir[i]='a'; #include<iostream>
else using namespace std;
sir[i]=sir[i]+1; int main()
} {
cout<<sir; int n,m=0,c=0,aux=0,a[100][100];
return 0; cin>>n;
} aux=n;
while(n!=0)
36. Scrieţi programul care citeşte de la tastatură un cuvânt {
C format din cel mult 30 de caractere, litere mari ale m++;
alfabetului englez, şi afişează pe ecran, fiecare pe câte o n=n/10;
linie, toate prefixele acestuia, în ordine crescătoare a }
lungimilor. for(int i=1;i<=m;i++)
Exemplu: C=zefir. Se va afișa: {
z n=aux;
ze for(int j=1;j<=m;j++)
zef {
zefi a[i][j]=n%10;
zefir n=n/10;
}
COD }
#include<iostream> for(int i=1;i<=m;i++)
#include<string.h> {
using namespace std; for(int j=1;j<=m;j++)
int main() cout<<a[i][j]<<" ";
{ cout<<endl;
int k=0,i,n; }
return 0; #include<iostream>
} #include<fstream>
using namespace std;
37. Fişierul numere.in conţine pe prima linie un număr ifstream f("intrare39.txt");
natural n (1 < n < 1000), iar pe a doua linie este un şir de n int main()
numere naturale cuprinse între 1 şi 1.000.000. Să se {
determine numărul perechilor (ai, aj) cu i<j și ai+aj este int n,a[100],i,j,k,c=0;
divizibil cu 5. Se va afișa acest număr la ecran. f>>n;
Exemplu: for(int i=1;i<=n;i++)
numere.in f>>a[i];
5 for(int i=1;i<n-1;i++)
2 12 3 5 8 {
Se va afişa: 4 (2+3, 2+8, 12+3, 12+8) for(int j=i+1;j<n;j++)
{
COD for(int k=j+1;k<=n;k++)
#include<iostream> if(i<j<k && (a[i]+a[j]+a[k])%2!=0)
#include<fstream> c++;
using namespace std; }
ifstream f("intrare38.txt"); }
ofstream g("iesire38.txt"); cout<<c;
int main() return 0;
{ }
int n,a[100],i,j,c=0;
f>>n; 39. Fişierul numere.in conţine pe prima linie numerele
for(int i=1;i<=n;i++) naturale n și k (1 < n < 10000, 1 < k < 10), iar pe a doua linie
f>>a[i]; este un şir a1, a2, ..., an de numere naturale cuprinse între 0
for(int i=1;i<n;i++) şi 100. Să se afișeze în fișierul numere.out, în ordine
{ crescătoare numerele din șir apar de cel puțin k ori.
for(int j=i+1;j<=n;j++) Exemplu:
if(i<j && (a[i]+a[j])%5==0) numere.in
c++; 10 3
} 7735111711
cout<<c; Se va afişa: 1 7
f.close();
g.close(); COD
return 0; #include<iostream>
} #include<fstream>
using namespace std;
ifstream f("intrare40.txt");
ofstream g("iesire40.txt");
38. Fişierul numere.in conţine pe prima linie un număr int main()
natural n (1 < n < 100), iar pe a doua linie este un şir a 1, {
a2, ..., an de numere naturale cuprinse între 1 şi 1.000.000. int fr[102],a[100],b[100],t=0,n,k;
Să se determine numărul tripletelor de (a i, aj, ak) cu i<j<k și f>>n>>k;
ai+aj +ak este impar. Se va afișa acest număr la ecran. for(int i=0;i<=100;i++)
Exemplu: fr[i]=0;
numere.in for(int i=1;i<=n;i++)
4 {
2 12 3 5 f>>a[i];
Se va afişa: 2 (2+12+3, 2+12+5) fr[a[i]]++;
}
COD for(int i=1;i<=n;i++)
if(fr[a[i]]>=k) {
{ if(fr[a[i]]*a[i]>maxfr)
t++; {maxfr=fr[a[i]]*a[i];
b[t]=a[i]; max=a[i];}
fr[a[i]]=0; }
} for(int i=1;i<=n;i++)
for(int i=1;i<t;i++) if(a[i]!=max)
for(int j=i+1;j<=t;j++) s=s+a[i];
if(b[i]>b[j]) g<<max<<" "<<s;
{ }
int aux=b[i];
b[i]=b[j];
b[j]=aux;
}
for(int i=1;i<=t;i++)
g<<b[i]<<" ";
f.close();
g.close();
return 0;
}

40. Fişierul numere.in conţine pe prima linie un număr


natural n (1 < n < 100), iar pe a doua linie este un şir a 1,
a2, ..., an de numere naturale cuprinse între 1 şi 100. Să se
aleagă un număr X din șir astfel încât suma elementelor
diferite de X să fie minimă. Se va afișa X și suma minimă
Exemplu:
numere.in
9
553378334
Se va afişa: 3 29 (se elimină 3 și restul elementelor au
suma 29)

COD
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("intrare41.txt");
ofstream g("iesire41.txt");
int main()
{
int n,fr[101],a[100],maxfr=0,max=0,s=0;
f>>n;
for(int i=1;i<=100;i++)
fr[i]=0;
for(int i=1;i<=n;i++)
{
f>>a[i];
fr[a[i]]++;
}
maxfr=fr[a[1]]*a[1];
for(int i=1;i<=n;i++)

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