Documente Academic
Documente Profesional
Documente Cultură
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
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++)