Sunteți pe pagina 1din 16

SUBIECTE PROGRAMARE

1 Din fisierul date.in de pe prima linie se citeste un numar natural n, iar de pe urmatoarele linii, n
numere naturale. Sa se scrie in fisierul date.out, numerele care sunt palindroame, pe acelasi rand,
despartite prin cate un spatiu. Un numar este palindrom daca este egal cu rasturnatul sau.
Exemplu:
date.in date.out
4 2 101
2
10
3434
101
#include<iostream.h>
#include<fstream.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
int palindrom(int n)
{int t,inv=0;
t=n;
while(t){inv=inv*10+t%10;t/=10}
if(inv==n)return 1;
else return 0;}
void main()
{int n,i,x;
f>>n;
for(i=1;i<=n;i++)
{f>>x;if(palindrom(x))g<<x<<" ";}
g.close();}
2. Din fisierul date.in de pe prima linie se citeste un numar natural n, iar de pe urmatoarele linii, n
numere naturale. Sa se scrie in fisierul date.out, numerele care sunt perfecte, pe acelasi rand, despartite
prin cate un spatiu. Un numar este perfect daca este egal su suma divizorilor sai mai mici decat el.
Exemplu:
date.in date.out
6 6 28
1
12
6
100
28
155
#include<iostream.h>
#include<fstream.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
int perfect(int n)
{int i,s=0;
for(i=2;i<=n/2;i++)
if(n%i==0)s+=i;
if(n==s)return 1;
else return 0;}
void main()
{int n,i,x;
f>>n;
for(i=1;i<=n;i++){f>>x;if(perfect(x))g<<x<<" ";}
g.close();}
3. Din fisierul date.in de pe prima linie se citeste un numar natural n, iar de pe urmatoarele linii, n
numere naturale. Sa se scrie in fisierul date.out, numerele care sunt prime, pe acelasi rand, despartite prin
cate un spatiu.
Exemplu:
date.in date.out
5 13 2 17
1
13
2
100
17
55
#include<iostream.h>
#include<fstream.h>
fstream g("iesire.txt",ios::out);
int prim(int n)
{if(n<=1)return 0;
for(int i=2;i<=n/2;i++)
if(n%i==0)return 0;
return 1;}
void main()
{int n,i,x;
f>>n;
for(i=1;i<=n;i++){f>>x;if(prim(x))g<<x<<" ";}
g.close();}
4. Din fisierul date.in de pe prima linie se citeste un numar natural n, iar de pe urmatorul rand n
numere reale. Sa se scrie cele n numere citite, in ordine descrescatoare, in fisierul date.out pe acelasi rand,
despartite prin cate un spatiu.
Exemplu:
date.in date.out
5
8 9 1 0 -3 9 8 1 0 -3
#include<iostream.h>
#include<fstream.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{int n,i,x,y;
f>>n;f>>x;
for(i=1;i<=n;i++){f>>y;if(x<y)g<<y<<" ";
else {g<<x<<" ";x=y;}}
g.close();}
5. Din fisierul date.in de pe prima linie se citesc numere naturale. Sa se creeze un vector cu
numerele pare si apoi elementele vectorului sa se scrie in fisierul date.out pe acelasi rand, despartite prin
cate un spatiu.
Exemplu:date.in date.out
12 31 125 14 6 12 14 6
#include<iostream.h>
#include<fstream.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{int v[100],nr=0,i,x;
while(f>>x)if(x%2==0)v[++nr]=x;
for(i=1;i<=nr;i++)g<<v[i]<<" ";
g.close();}
6. Din fisierul date.in de pe prima linie se citesc un natural n si un numar real a, iar de pe
urmatorul rand n numere reale. Sa se verifice daca valoarea variabilei a se gaseste printre elementele
vectorului; in caz afirmativ in fisierul date.out vor fi scrise pe acelasi rand, despartite prin cate un spatiu,
toate pozitiile pe care apare valoarea respectiva, iar in caz contrar mesajul NU.
Exemplu: date.in date.out
5 2 1 4 5
2 3 3 2 2
#include<iostream.h>
#include<fstream.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{int v[100],i,a,n,p=0;
f>>n>>a;
for(i=1;i<=n;i++){f>>v[i];if(v[i]==a){g<<i<<" ";p=1;}}
if(!p)g<<"nu";
g.close();}
7. Din fisierul date.in de pe prima linie se citeste un natural n, de pe a doua linie doua numere
intregi a si b (ab), iar de pe linia a treia n numere intregi. Sa se construiasca un vector cu numerele de pe
a treia linie a fisierului care se gasesc in intervalul [a,b] si sa se numere elementele dinafara intervalului.
Elementele vectorului vor fi scrise pe prima linie a fisierului date.out despartite prin cate un spatiu, iar
numarul de elemente situate inafara intervalului [a,b] pe a doua linie.
Exemplu:
date.in date.out
4 20 15
10 30 2
6 20 1 15
#include<iostream.h>
#include<fstream.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{int n,v[100],nr=0,x,a,b;
f>>n>>a>>b;
for(int i=1;i<=n;i++){f>>x;if(x>=a&&x<=b)v[++nr]=x;}
for(i=1;i<=nr;i++)g<<v[i]<<" ";g<<endl;
g<<n-nr;
g.close();}
8. Din fisierul matrice.in de pe prima linie se citescs doua numere naturale m si n, iar de pe
urmatoarele m linii elementele matricei, citite pe linii. Sa se determine valoarea maxima din matrice, iar
apoi sa fie scrisa pe prima linie a fisierului matrice.out. Pe urmatoarele linii ale fisierului de iesire vor fi
scrise pozitiile valorii maxime in matrice.
Exemplu:
matrice.in matrice.out
3 4 4
1 2 3 4 1 4
2 2 4 4 2 3
4 0 0 4 2 4
3 1
3 4
#include<iostream.h>
#include<fstream.h>
fstream f("matrice.in",ios::in);
fstream g("matrice.out",ios::out);
void main()
{int a[100][100],m,n,i,j,max=0;
f>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++){f>>a[i][j];if(a[i][j]>max)max=a[i][j];}
g<<max<<endl;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)if(a[i][j]==max)g<<i<<" "<<j<<endl;
g.close();}
9. Din fisierul matrice.in de pe prima linie se citesc doua numere naturale m si n, iar de pe
urmatoarele m linii elementele matricei, citite pe linii. Sa se determine media aritmetica a elementelor
pozitive din matrice, iar apoi sa fie scrisa pe prima linie a fisierului matrice.out. Daca matricea nu
contine elemente pozitive, in fisierul de iesire va fi scris mesajul NU.
Exemplu:
matrice.in matrice.out
3 4 3
-3 4 5 -1
1 2 3 3
-9 -2 -1 -3
#include<iostream.h>
#include<fstream.h>
fstream f("matrice.in",ios::in);
fstream g("matrice.out",ios::out);
void main()
{int a[100][100],m,n,i,j,s=0,nr=0;
f>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++){f>>a[i][j];if(a[i][j]>0){s+=a[i][j];nr++;}}
g<<float(s/nr);
g.close();}
10. Din fisierul matrice.in de pe prima linie se citesc doua numere naturale m si n, de pe
urmatoarele m linii elementele matricei, citite pe linii, iar de pe ultima linie doua numere naturale l si k
(1l,km). Sa se interschimbe liniile l si k din matrice, iar matricea modificata sa fie scrisa in fisierul
matrice.out, elementele unei linii fiind scrise pe acelasi rand cu cate un spatiu intre ele.
Exemplu:
matrice.in matrice.out
5 4 1 2 3 4
1 2 3 4 4 3 2 1
0 1 1 1 6 7 8 9
6 7 8 9 0 1 1 1
4 3 2 1 1 1 1 1
1 1 1 1
2 4
#include<iostream.h>
#include<fstream.h>
fstream f("matrice.in",ios::in);
fstream g("matrice.out",ios::out);
void main()
{int a[100][100],m,n,i,j,l,k,t;
f>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)f>>a[i][j];
f>>l>>k;
for(j=1;j<=n;j++){t=a[l][j];a[l][j]=a[k][j];a[k][j]=t;}
for(i=1;i<=m;i++)
{for(j=1;j<=n;j++)g<<a[i][j]<<" ";g<<endl;}
g.close();}
11. Din fisierul matrice.in de pe prima linie se citeste un numar natural n, de pe urmatoarele n
linii elementele matricei, citite pe linii. Sa se verifice daca matricea este simetrica fata de diagonala
principala, iar in fisierul matrice.out sa se scrie un mesaj corespunzator.
Exemplu:
matrice.in matrice.out
3 Matricea este simetrica fata de diagonala principala
1 2 3
2 1 1
3 1 1
#include<iostream.h>
#include<fstream.h>
fstream f("matrice.in",ios::in);
fstream g("matrice.out",ios::out);
void main()
{int a[100][100],n,i,j,ok=1;
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)f>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]!=a[j][i])ok=0;
if(ok)g<<"matricea este simetrica fata de diagonala principala";
g.close();}

12. Din fisierul date.in de pe prima linie se citeste un text ce contine cuvinte separate printr-un
singur spatiu. Sa se determine cate cuvinte contine textul, iar numarul respectiv sa se scrie pe prima linie a
fisierului date.out.
Exemplu:
date.in date.out
atestat la informatica 3
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{char s[70],nr=0;
f.get(s,70);
for(int i=0;i<strlen(s);i++)
if(s[i]==' ')nr++;
g<<nr+1;
g.close();}
13. Din fisierul date.in de pe prima linie se citesc doua numere naturale nenule. Sa se determine
cel mai mare divizor comun si cel mai mic multiplu comun pentru numerele citite si sa se scrie in fisierul
date.out, pe linii separate.
Exemplu
date.in date.out
15 20 5
60
#include<iostream.h>
#include<fstream.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{int x,y,a,b;
f>>x;f>>y;
a=x;b=y;
while(a!=b)if(a>b)a-=b;
else b-=a;
g<<a<<endl;
g<<(x*y)/a;
g.close();}
14. Fiierul numere.in conine pe prima linie un numr natural n, iar pe a doua line, separate prin
spaiu, n numere naturale. S se calculeze media aritmetic a numerele prime de pe a doua linie din fiier.
Rezultatul se va afia in fisierul numere.out, cu 2 zecimale.
Exemplu:
numere.in numere.in
7 6.00
12 2 5 9 25 10 11
#include<iostream.h>
#include<fstream.h>
fstream f("numere.in",ios::in);
fstream g("numere.out",ios::out);
int prim(int n)
{if(n<=1)return 0;
for(int i=2;i<=n/2;i++)
if(n%i==0)return 0;
return 1;}
void main()
{int n,i,x,s=0,nr=0;
f>>n;
for(i=1;i<=n;i++){f>>x;if(prim(x)){s+=x;nr++;} }
g<<float(s/nr);
g.close();}
15. Fiierul divizor.in conine pe prima linie un numr natural nenul n, iar pe a doua line, separate
prin spaiu, n numere naturale nenule. S se afieze n fiierul divizor.out, pe prima linie separate prin
spaiu, acele numere de pe a doua linie din fiierul de intrare care sunt prime cu n, iar pe a doua line se va
afia cte astfel de numere exist.
Exemplu:
divizor.in divizor.out
8 33 9 41 45
12 33 9 41 10 18 45 22 4
#include<iostream.h>
#include<fstream.h>
fstream f("divizor.in",ios::in);
fstream g("divizor.out",ios::out);
int prime(int a,int b)
{while(a!=b)if(a>b)a-=b;
else b-=a;
if(a==1)return 1;
else return 0;}
void main()
{int x,n,i,a,b,nr=0;
f>>n;
for(i=1;i<=n;i++){f>>x;a=n;b=x;if(prime(b,a)){g<<x<<" ";nr++;}}
g<<endl;
g<<nr;
g.close();}
16. Fiierul suma.in conine pe prima linie dou numere naturale separate prin spaiu, m i n, iar
pe urmtoarele m linii cte n numere naturale separate prin spaiu, reprezentnd elementele unei matrice
cu m linii i n coloane. S se afieze n fiierul suma.out, separate prin spaiu, indicii liniilor din matricea
din fiierul de intrare pentru care suma elementelor de pe acea linie este un numr par.
Exemplu:
suma.in suma.out
4 5 2 3
2 21 33 15 20
3 3 11 19 44
33 7 65 26 701
55 42 22 109 9
#include<iostream.h>
#include<fstream.h>
fstream f("suma.in",ios::in);
fstream g("suma.out",ios::out);
void main()
{int a[100][100],m,n,i,j,s=0;
f>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)f>>a[i][j];
for(i=1;i<=m;i++)
{s=0;
for(j=1;j<=n;j++)s+=a[i][j];
if(s%2==0)g<<i<<" ";}
g.close();}
17. Fiierul diagonala.in conine pe prima linie un numr natural n, iar pe urmtoarele n linii cte
n numere naturale separate prin spaiu, reprezentnd elementele unei matrice cu n linii i n coloane. S se
afieze n fiierul diagonala.out, separate prin spaiu, elementele de cel puin dou cifre de pe diagonala
principal din matricea dat, care au prima i ultima cifr egale.
Exemplu:
diagonala.in diagonala.out
4 4014 7137
1 4 202 11
513 4014 8 21
58 23 89 102
56 702 81 7137
#include<iostream.h>
#include<fstream.h>
fstream f("diagonala.in",ios::in);
fstream g("diagonala.out",ios::out);
int cifra(int n)
{int t;
t=n%10;
while(n/10)n/=10;
if(t==n)return 1;
else return 0;}
void main()
{int a[100][100],n,i,j,t;
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)f>>a[i][j];
for(i=1;i<=n;i++){t=a[i][i];if(a[i][i]>9&&cifra(a[i][i]))g<<t<<" "; }
g.close();}
18. Fiierul cuvant.in conine pe prima linie un numr natural n, iar pe urmtoarele n linii cte un
cuvnt format din litere mici ale alfabetului englez. S se afieze n fiierul cuvant.out, cte unul pe linie,
acele cuvinte din fiierul de intrare care nu conin litera a.
Exemplu:
cuvant.in cuvant.out
7 istorie
informatica sport
geografie biologie
istorie desen
sport
matematica
biologie
desen
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("cuvant.in",ios::in);
fstream g("cuvant.out",ios::out);
void main()
{char cuv[30][30];
int n,i;
f>>n;
for(i=0;i<=n;i++)
{f.getline(cuv[i],30);
if(strchr(cuv[i],'a')==0)g<<cuv[i]<<endl;}
g.close();}
19. Fiierul noduri.in conine pe prima linie numrul n de noduri al unui graf neorientat, iar pe
urmtoarele linii, separate prin spaiu, extremitile cte unei muchii a grafului. S se afieze n fiierul
noduri.out, pe prima linie separate prin spaiu, nodurile terminale ale grafului, iar pe a doua linie, numrul
nodurilor izolate din graf.
Exemplu:
noduri.in noduri.out
7 5 6 7
1 2 1
1 3
2 5
2 3
3 6
3 7
#include<iostream.h>
#include<fstream.h>
fstream f("noduri.in",ios::in);
fstream g("noduri.out",ios::out);
struct muchie{int x,y;}v[90];
int d[100];
void main()
{int i,n,m,nr=0;
f>>n>>m;
for(i=1;i<=m;i++){f>>v[i].x>>v[i].y;d[v[i].x]++;d[v[i].y]++;}
for(i=1;i<=n;i++)
if(d[i]==1)g<<i<<" ";
g<<endl;
for(i=1;i<=n;i++)
if(d[i]==0)nr++;g<<nr;
g.close();}
20. Se citeste din fisierul matrice.in o matrice nepatratica astfel: de pe prima linie numarul de linii
m si numarul de coloane n ( n,m<10). Sa se retina intr-un vector elementele maxime de pe fiecare linie,
iar in alt vector elementele minime de pe fiecare coloana. Sa se afiseze cei doi vectori pe cate o linie in
fisierul matrice.out, elementele fiecarei linii fiind despartite printr-un spatiu.
Exemplu:
matrice.in matrice.out
3 4 7 9 10
2 -1 7 4 2 -1 7 -6
6 9 8 1
9 8 10 -6
#include<iostream.h>
#include<fstream.h>
fstream f("matrice.in",ios::in);
fstream g("matrice.out",ios::out);
void main()
{int a[100][100],n,i,j,max=0,min=32000,m,v[90];
f>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)f>>a[i][j];
for(i=1;i<=m;i++)
{max=0;
for(j=1;j<=n;j++)
if(a[i][j]>max)max=a[i][j];
v[i]=max;}
for(i=1;i<=m;i++)g<<v[i]<<" ";g<<endl;
for(j=1;j<=n;j++)
{min=32000;
for(i=1;i<=m;i++)
if(a[i][j]<min)min=a[i][j];v[j]=min;}
for(i=1;i<=n;i++)g<<v[i]<<" ";
g.close();}
21. Se citeste de la tastatura un numar natural n>10. Sa se calculeze suma maximelor tuturor
perechilor de cifre alaturate ale numarului si sa se verifice daca aceasta suma este numar prim. Se va afisa
pe ecran un mesaj corespunzator.
Exemplu:
n=2468
S= max ( 8,6)+ max (6,4) + max (4,2)=8+6+4=18; se va afisa mesajul NU
#include<iostream.h>
int prim(int n)
{if(n<=1)return 0;
for(int i=2;i<=n/2;i++)
if(n%i==0)return 0;
return 1;}
void main()
{int n,s=0;
cin>>n;
while(n)
{if(n%10>n/10%10)s+=n%10;
else s+=n/10%10;
n/=10;}
if(prim(s))cout<<s;
else cout<<"nu";}
22. Se citeste din fiserul date.txt un numar natural n<=30000. Sa se retina intr-un vector toate
cifrele pare ale numarului, sa se sorteze crescator elementele vectorului si sa se afiseze in fisierul iesire.txt
pe acelasi rand si despartite prin cate un spatiu.
Exemplu :date.txt 14328 iesire.txt 2 4 8
#include<iostream.h>
#include<fstream.h>
fstream f("date.txt",ios::in);
fstream g("iesire.txt",ios::out);
void main()
{int v[90],nr=0,n,i,j,t;
f>>n;
while(n)
{if(n%10%2==0)v[++nr]=n%10;
n/=10;}
for(i=1;i<nr;i++)
for(j=i+1;j<=nr;j++)
if(v[i]>v[j]){t=v[i];v[i]=v[j];v[j]=t;}
for(i=1;i<=nr;i++)g<<v[i]<<" ";
g.close();}
23. Din fisierul cuvant.txt se citeste de pe prima linie un text. Sa se calculeze suma cifrelor
prezente in text si sa se afiseze suma in fisierul iesire.txt
Exemplu : cuvant.txt 34gj 5florini iesire.txt 12
#include<iostream.h>
#include<string.h>
#include<fstream.h>
fstream f("cuvant.txt",ios::in);
fstream g("iesire.txt",ios::out);
void main()
{char s[30];
int i,k=0;
f.get(s,30);
for(i='0';i<='9';i++)
for(int j=0;j<=strlen(s);j++)
if(s[j]==i)k+=s[j]-'0';
g<<k;g.close();}
24. Fisierul numere.txt contine pe fiecare linie cate un numar intreg. Sa sa creeze o lista liniara
simplu inlantuita in care se vor introduce numai valorile pare din fisierul dat, iar elementele listei sa se
scrie in fisierul iesire.txt, fiecare pe cate o linie.
Exemplu : numere.txt 2 3 4 5 iesire.txt 2 4
#include<iostream.h>
#include<fstream.h>
fstream f("numere.txt",ios::in);
fstream g("iesire.txt",ios::out);
struct nod{int info;
nod *urm;}*prim,*ultim;
void main()
{int x;
nod *p;
while(f>>x&&x%2!=0);
prim=new nod;prim->info=x;prim->urm=NULL;ultim=prim;
while(f>>x)
if(x%2==0){p=new nod;p->info=x;p->urm=NULL;ultim->urm=p;ultim=p;}
p=prim;
while(p)
{g<<p->info<<" ";p=p->urm;}
g.close();}
25. Se citeste de la tastatura un numar natural n(n<1000). Se cere sa se faca conversia numarului in
baza doi, iar rezultatul sa fie scris pe prima linie a fisierului date.out.
Exemplu : Pentru n=163 date.out 10100011
#include<iostream.h>
#include<fstream.h>
fstream g("date.out",ios::out);
void main()
{int n,i,v[90],nr=0;
cin>>n;
while(n){v[++nr]=n%2;n/=2;}
for(i=nr;i>=1;i--)g<<v[i]<<" ";
g.close();}
26. Sa se creeze fisierul text valori.out care sa contina toate numerele cuprinse intre a si b formate
din cifre identice. Numerele vor fi scrise pe acelasi rand, despartite prin cate un spatiu. Valorile lui a si b
sunt numere naturale care se citesc de la tastatura(a,b<30000).
Exemplu : Pentru a=10 si b=150 valori.out 11 22 33 44 55 66 77 88 99 111
#include<iostream.h>
#include<fstream.h>
fstream g("valori.out",ios::out);
int cifre(int n)
{int t,p=1;
t=n%10;n/=10;
while(n)
{if(t!=n%10)p=0;n/=10;}
if(p)return 1;
else return 0;}
void main()
{int a,b,i,t;
cin>>a>>b;
for(i=a;i<=b;i++)
{t=i;if(cifre(t))g<<i<<" ";}
g.close();}
27. De pe prima linie a fisierului date.in se citeste un cuvant. Se cere sa se creeze fisierul date.out
care sa contina toate prefixele cuvantului, fiecare pe cate un rand.
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{char s[30];
int i;
f.get(s,30);
for(i=0;i<=strlen(s);i++)
{for(int j=0;j<=strlen(s)-i;j++)g<<s[j];g<<endl;}
g.close();}
28. De pe prima linie a fisierului date.in se citeste un text. Se cere sa se creeze fisierul date.out
care sa contina pe prima linie textul scris doar cu litere mari, iar pe a doua linie textul scris doar cu litere
mici.
Exemplu :
date.in date.out
AbcDEfgHtyUUww ABCDEFGHTYUUWW
abcdefghtyuuww
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{char s[30];
int i;
f.get(s,30);
strupr(s);g<<s<<endl;
strlwr(s);g<<s<<endl;
g.close();}
29. Fisierul cuvinte.in contine cuvinte formate numai din litere mici si dispuse fiecare pe cate un
rand. Se cere sa se scrie cuvintele in ordine alfabetica in fisierul cuvinte.out, pe acelasi rand despartite
prin caracterul ,.
Exemplu :date.in date.out
carte apa,carte,penar
penar
apa
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("cuvinte.in",ios::in);
fstream g("cuvinte.out",ios::out);
void main()
{char cuv[30][30],t[30];
int n,i=1;
while(f.getline(cuv[i],30))i++;
n=i;
for(i=1;i<n;i++)
for(int j=1;j<=n;j++)
if(strcmp(cuv[i],cuv[j])<0){strcpy(t,cuv[i]);strcpy(cuv[i],cuv[j]);
strcpy(cuv[j],t);}
for(i=1;i<n;i++)g<<cuv[i]<<",";
g.close();}
30. Din fisierul date.in de pe prima linie se citesc doua numere naturale nenule. Sa se determine
cifrele lor comune si sa se scrie in fisierul date.out, pe acelasi rand despartite prin cate un spatiu. Fiecare
cifra se va afisa o singura data.
Exemplu
date.in 12223 62111 date.out 1 2
#include<iostream.h>
#include<fstream.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{int b,i,a,v[90],v1[90],j,nr1=0,nr2=0;
f>>a>>b;
while(a)
if(a%10==a/10%10)a/=10;
else{ v[++nr1]=a%10;
a/=10;}
while(b)
if(b%10==b/10%10)b/=10;
else {v1[++nr2]=b%10;
b/=10;}
for(i=1;i<=nr1;i++)
for(j=1;j<=nr2;j++)
if(v[i]==v1[j])g<<v[i]<<" ";
}
31. Din fisierul date.in de pe prima linie se citesc un natural n si un numar real a, iar de pe
urmatorul rand n numere reale. Sa se verifice daca valoarea variabilei a se gaseste printre elementele
vectorului; in caz afirmativ in fisierul date.out vor fi scrise pe acelasi rand, despartite prin cate un spatiu,
toate pozitiile pe care apare valoarea respectiva, iar in caz contrar mesajul NU.
Exemplu: date.in date.out
5 2 1 4 5
2 3 3 2 2
32. Din fisierul matrice.in de pe prima linie se citesc doua numere naturale m si n, iar de pe
urmatoarele m linii elementele matricei, numere naturale, citite pe linii. Sa se determine media aritmetica
a numerelor prime din matrice, iar apoi sa fie scrisa pe prima linie a fisierului matrice.out. Daca
matricea nu contine numere prime, in fisierul de iesire va fi scris mesajul NU.
Exemplu: matrice.in matrice.out
3 4 NU
33 4 52 1
1 24 30 36
9 102 1 15
#include<iostream.h>
#include<fstream.h>
fstream f("matrice.in",ios::in);
fstream g("matrice.out",ios::out);
int prim(int n)
{if(n<=1)return 0;
for(int i=2;i<=n/2;i++)
if(n%i==0)return 0;
return 1;}
void main()
{int n,m,j,i,a[100][100],s=0,nr=0;
f>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{f>>a[i][j];
if(prim(a[i][j])){s+=a[i][j];nr=nr+1;}}
if(nr==0)g<<"nu";
else g<<float(s/nr);
g.close();}
33. Din fisierul matrice.in de pe prima linie se citesc doua numere naturale m si n, de pe
urmatoarele m linii elementele matricei, citite pe linii, iar de pe ultima linie doua numere naturale l si k
(1l,km). Sa se interschimbe coloanele l si k din matrice, iar matricea modificata sa fie scrisa in fisierul
matrice.out, elementele unei linii fiind scrise pe acelasi rand cu cate un spatiu intre ele.
Exemplu:
matrice.in matrice.out
5 4 1 4 3 2
1 2 3 4 0 1 2 1
0 1 1 1 6 9 8 7
6 7 8 9 4 1 1 3
4 3 2 1 1 1 1 1
1 1 1 1
2 4
34. Din fisierul date.in de pe prima linie se citeste un text ce contine cuvinte formate doar din
litere mici, separate prin cate un spatiu. Sa se extraga cuvintele din textul si sa se scrie in fisierul date.out,
in ordine alfabetica, fiecare pe cate un rand.
Exemplu:
date.in date.out
atestat la informatica atestat
informatica
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{char s[50],cuv[20][20],*p,t[20];
int i,j,k=0;
f.get(s,50);
p=strchr(s,' ');
while(p)
{p=strchr(s,' ');
strncpy(cuv[++k],s,p-s);
strcpy(s,p+1);
}
for(i=1;i<=k;i++)
for(j=i+1;j<=k;j++)
if(strcmp(cuv[i],cuv[j])>0){strcpy(t,cuv[i]);
strcpy(cuv[i],cuv[j]);
strcpy(cuv[j],t);}
for(i=1;i<=k;i++)g<<cuv[i]<<endl;
g.close();}
la
35.. Fiierul numere.in conine pe prima linie un numr natural n, iar pe a doua line, separate prin
spaiu, n numere naturale. S se calculeze media aritmetic a numerele care sunt palindroame de pe a doua
linie din fiier. Rezultatul se va afia in fisierul numere.out, cu 2 zecimale.
Exemplu:
numere.in numere.in
7 234.25
12 2 5 919 25 10 11
#include<iostream.h>
#include<fstream.h>
fstream f("numere.in",ios::in);
fstream g("numere.out",ios::out);
int palindrom(int n)
{int t,inv=0;
t=n;
while(t){inv=inv*10+t%10;t/=10;}
if(inv==n)return 1;
else return 0;}
void main()
{int n,i,x,s=0,nr=0;
f>>n;
for(i=1;i<=n;i++)
{f>>x;if(palindrom(x)){s+=x;nr++;}}
g<<float(s/nr);
g.close();}
36. Fiierul suma.in conine pe prima linie dou numere naturale separate prin spaiu, m i n, iar
pe urmtoarele m linii cte n numere naturale separate prin spaiu, reprezentnd elementele unei matrice
cu m linii i n coloane. S se afieze n fiierul suma.out, separate prin spaiu, indicii coloanelor din
matricea data pentru care suma elementelor de pe acea coloana este un numr par.
Exemplu:
suma.in suma.out
4 5 2 3
2 21 33 15 20
3 3 11 18 44
33 8 65 26 700
55 42 21 109 9
37. Fiierul matrice.in conine pe prima linie un numr natural n, iar pe urmtoarele n linii cte n
numere naturale separate prin spaiu, reprezentnd elementele unei matrice patrate cu n linii i n coloane.
S se afieze n fiierul matrice.out, pe acelasi rand separate prin spaiu, suma elementelor situate sub
diagonala principala si suma elementelor situate deasupra diagonalei secundare.
Exemplu:
diagonala.in diagonala.out
4 30 34
1 4 2 11
5 14 8 21
8 3 9 10
6 7 1 13
#include<iostream.h>
#include<fstream.h>
fstream f("matrice.in",ios::in);
fstream g("matrice.out",ios::out);
void main()
{int n,m,j,i,a[100][100],s=0;
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>a[i][j];
for(i=2;i<=n;i++)
for(j=1;j<=i-1;j++)
s+=a[i][j];
g<<s<<" ";s=0;
for(i=1;i<=n-1;i++)
for(j=1;j<=n-i;j++)s+=a[i][j];
g<<s;
g.close();}
38. Fiierul cuvant.in conine pe prima linie un numr natural n, iar pe urmtoarele n linii cte un
cuvnt format din litere mici ale alfabetului englez. S se afieze pe prima linie a fiierului cuvant.out, cel
mai mare cuvant in ordine lexicografica.
Exemplu: cuvant.in cuvant.out
7 sport
informatica
geografie
istorie
sport
matematica
biologie
desen
#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("cuvant.in",ios::in);
fstream g("cuvant.out",ios::out);
char max[30];
void main()
{char cuv[30][30];
int n,i;
f>>n;
for(i=0;i<=n;i++)
{f.getline(cuv[i],30);
if(strcmp(cuv[i],max)>0)strcpy(max,cuv[i]);}
g<<max;
g.close();}
39. Se citeste de la tastatura un numar natural n<=30000. Sa se retina intr-un vector primele n
numere care au suma cifrelor numar prim si sa se afiseze elementele vectorului in fisierul iesire.txt, pe
acelasi rand si despartite prin cate un spatiu.
Exemplu : Pentru n=7 iesire.txt 2 3 5 7 11 12 14
#include<iostream.h>
#include<fstream.h>
fstream g("iesire.txt",ios::out);
int suma(int n)
{int s=0,t;t=n;
while(t){s+=t%10;t/=10;}
return s;}
int prim(int n)
{if(n<=1)return 0;
for(int i=2;i<=n/2;i++)
if(n%i==0)return 0;
return 1;}
void main()
{int n,i,nr=0,x;
cin>>n;
i=2;
while(nr<n)
{x=suma(i);
if(prim(x)){g<<i<<" ";nr++;}
i++;}
g.close();}
40. De pe prima linie a fisierului date.in se citeste un cuvant. Se cere sa se creeze fisierul date.out
care sa contina toate sufixele cuvantului, fiecare pe cate un rand.

#include<iostream.h>
#include<fstream.h>
#include<string.h>
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
void main()
{char s[50];
int i,j;
f.get(s,50);
for(i=0;i<=strlen(s);i++)
{for(j=i;j<=strlen(s);j++)g<<s[j];g<<endl;}
g.close();}

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