Documente Academic
Documente Profesional
Documente Cultură
1) #include <iostream>
#include <fstream>
using namespace std;
unsigned v[100],n,i,min1,max1;
ifstream f("date.in");
void citire()
{f>>n;
for(i=1;i<=n;i++) f>>v[i];
}
void minim()
{min1=v[1];
for(i=2;i<=n;i++)
if(min1>v[i]) min1=v[i];
}
void maxim()
{max1=v[1];
for(i=2;i<=n;i++)
if(max1<v[i]) max1=v[i];
}
unsigned long numar()
{unsigned aux,cifre[14],k=0,j;
unsigned long nr=0;
while(min1!=0){k++;
cifre[k]=min1%10;
min1=min1/10;}
while (max1!=0) {k++;
cifre[k]=max1%10;
max1=max1/10;}
for(i=1;i<k;i++)
for(j=i+1;j<=k;j++)
if(cifre[i]<cifre[j]) {aux=cifre[i];
cifre[i]=cifre[j];
cifre[j]=aux;}
for(i=1;i<=k;i++)
nr=nr*10+cifre[i];
return nr;
}
int main()
{citire();
minim();
maxim();
cout<<numar();
return 0;}
2. Se dă un tablou unidimensional cu n (1<=n<=100) componente naturale. Să se afişeze
divizorii elementului maxim din vector, în ordine descrescătoare.
Datele de intrare se vor citi din fişierul date.in astfel:
- pe prima linie se găseste n;
- pe linia a doua se găsesc elementele tabloului
Datele de ieşire se vor scrie pe ecran.
Exemplu: pentru fişierul de intrare date.in:
6
5 10 8 9 12 7
Se afişează: 12 6 4 3 2 1
2) #include <iostream>
#include <fstream>
using namespace std;
unsigned v[100],n,i,maxim,d;
int main()
{ifstream f("date.in");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
maxim=v[1];
for(i=2;i<=n;i++)
if(maxim<v[i]) maxim=v[i];
for(d=maxim;d>=1;d--)
if(maxim%d==0)
cout<<d<<' ';
return 0;}
3) #include <iostream>
#include <fstream>
using namespace std;
int v[100],i,n,k=0;
int main()
{ifstream f("date.in");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
i=1;
while(i<=n)
{
if(v[i]!=0) cout<<v[i]<<' ';
else break;
i++;
}
if(i==n+1) cout<<"Nici un element nul.";
return 0;}
4. Se dă un tablou bidimensional cu n linii şi n coloane(1<=n<=100). Se cere să se afişeze
câte perechi de numere prime între ele sunt pe digonala secundară a matricei.
Datele de intrare se vor citi din fişierul date.in astfel:
- pe prima linie se găseste n;
- pe următoarele n linii se găsesc elementele matricei
Datele de ieşire se vor scrie pe ecran.
Exemplu: pentru fişierul de intrare date.in:
4
1234
5678
9 10 11 12
13 14 15 16 Se afişează: 5
4) #include <iostream>
#include <fstream>
using namespace std;
int a[100][100],i,n,j,v[100],k;
int cmmdc(int x,int y)
{int r=x%y;
while(r!=0) {x=y;
y=r;
r=x%y;}
return y;}
int main()
{ifstream f("date.in");
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(i+j==n+1) v[i]=a[i][j];
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(cmmdc(v[i],v[j])==1) k++;
cout<<k;
return 0;}
5) #include <iostream>
#include <fstream>
using namespace std;
int a[100][100],n,m,i,j,maxim,pozi,pozj;
int main()
{ifstream f("date.in");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) f>>a[i][j];
maxim=a[1][1];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(maxim<a[i][j]) {maxim=a[i][j];
pozi=i; pozj=j;}
for(i=pozi-1;i<=pozi+1;i++)
for(j=pozj-1;j<=pozj+1;j++)
if(i!=0 && j!=0 && i!=n+1 && j!=m+1 && !(i==pozi && j==pozj))
cout<<a[i][j]<<" ";
return 0;}
6) #include <iostream>
#include <fstream>
using namespace std;
ifstream fin("date.in");
int main()
{unsigned a[100], n, i, x, y, r;
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
x=a[n-1];
y=a[n];
r=x%y;
while(r!=0)
{x=y;
y=r;
r=x%y;
}
a[n+1]=a[n];
a[n]=y;
n++;
for(i=1;i<n;i++)
for(x=i+1;x<=n;x++)
if(a[i]>a[x])
{ y=a[i];
a[i]=a[x];
a[x]=y;
}
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;}
7) #include <fstream>
#include <iostream>
using namespace std;
ifstream f("date.in");
int n,m,i,j,a[100][100],k=0,minim;
int prim(int nr)
{int d;
for(d=2;d<=n/2;d++)
if(nr%d==0) return 0;
return 1;
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
for(i=1;i<=n;i=i+2)
for(j=1;j<=m;j++)
if(prim(a[i][j])==1){k++;
if(k==1) minim=a[i][j];
if(k>1 && minim>a[i][j]) minim=a[i][j];}
if(k==0) cout<<"NU EXISTA";
else cout<<minim<<endl;
return 0;}
8) #include <fstream>
#include <iostream>
using namespace std;
ifstream f("date.in");
int n,i,j,a[100][100],grade[100],k=0,maxim=-1;
int main()
{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++)
grade[i]=grade[i]+a[i][j];
if(grade[i]%2==1) k++;
if(maxim<grade[i]) maxim=grade[i];
}
cout<<k<<" "<<maxim<<endl;
return 0;}
9) #include <fstream>
#include <iostream>
using namespace std;
ifstream f("date.in");
int n,i,j,a[100][100],grade[100],k=0,maxim=-1,poz;
int main()
{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++)
grade[i]=grade[i]+a[i][j];
if(grade[i]==1) k++;
if(maxim<grade[i])
{ maxim=grade[i];
poz=i; }
}
cout<<k<<" noduri terminale"<<endl;
cout<<"nodul "<<poz<<" are grad maxim"<<endl;
return 0;}
12. Scrieţi un program care citeşte din fişierul XII.IN un şir cu cel mult 10000000 numere
naturale din intervalul [100, 999999999], modifică fiecare număr prin interschimbarea cifrei
unităţilor cu cifra sutelor şi le afişează pe ecran separate printr-un spaţiu.
Exemplu: XII.IN se va afişa: 6321 409 5 73624
6123 904 500 73426
13. Scrieţi un program care citeşte din fişierul text XII.IN, cel mult 10000000 de numere
naturale, formate din cel mult 9 cifre fiecare, separate prin spaţii şi dintre acestea le afişează
pe ecran pe cele care au proprietatea de palindrom. Dacă nu se găsesc numere palindrom, se
va afişa pe ecran valoarea –1.
Exemplu: XII.IN se va afişa: 8228 2 131
7341 8228 660 2 80 131
15. Fişierul XII.IN conţine cel mult 10000000 numere naturale separate prin câte un spaţiu,
formate fiecare din cel mult 9 cifre. Să se scrie un program care să afişeze pe ecran numărul de
divizori proprii pentru fiecare număr citit.
Exemplu: XII.IN se va afişa: 4 2 0 2 2 0
6 4 7 15 27 5
16. Fişierul XII.IN conţine cel mult 10000000 numere naturale separate prin câte un spaţiu,
formate fiecare din cel mult 9 cifre. Să se scrie un program care să afişeze pe ecran toate
numerele din fişier formate numai din cifre pare. Dacă nu există astfel de numere se va afişa
mesajul “NU EXISTĂ”.
Exemplu: XII.IN se va afişa: 22
1233 22 1785 56 15657 457
17. Fişierul XII.TXT conţine pe prima linie un text format din cel mult 70 de caractere, primul
caracter fiind literă, iar cuvintele din text sunt separate prin câte un spaţiu, iar pe a doua linie o
literă mare. Fiecare cuvânt este format doar din litere mari ale alfabetului limbii engleze. Să se
scrie un program care să modifice fiecare cuvânt care începe cu litera ‘M’ prin înlocuirea
acesteia cu litera citită şi să scrie în fişierul XII.OUT textul modificat.
Exemplu: XII.TXT
MARIA ARE UN MAR
D
In XII.OUT se va afisa DARIA ARE UN DAR
18. Fişierul XII.TXT conţine un text format din cel mult 70 de caractere, primul caracter fiind
literă, iar cuvintele din text sunt separate prin câte un spaţiu. Fiecare cuvânt este format din
litere mari şi mici ale alfabetului limbii engleze, sau din cifre. Să se scrie un program care să
afişeze în fişierul XII.OUT numărul cifrelor întâlnite în text.
Exemplu: XII.TXT
In CLASA sunt 25 de elevi din CARE 7 Fete
In XII.OUT se va afisa 3
20. Fişierul XII.TXT conţine un text format din cel mult 70 de caractere, primul caracter fiind
literă, iar cuvintele din text sunt separate prin câte un spaţiu. Fiecare cuvânt este format din
litere mari şi mici ale alfabetului limbii engleze. Să se scrie un program care să afişeze în fişierul
XII.OUT numărul de consoane din text.
Exemplu: XII.TXT
Creierul calculatorului este microprocesorul
In XII.OUT se va afisa 22
22. Se citeşte un vector de n numere naturale. Să se afişeze numerele al căror invers este
divizibil cu suma cifrelor sale. Fiecare linie afişată va conţine numărul, inversul său şi suma
cifrelor sale separate printr-un spaţiu.
Exemplu: pentru n=5
13 12 24 17 68
Se va afişa
12 21 3
24 42 6
24. Se citesc de la tastatură numere naturale atâta timp cât suma numerelor citite nu
depăşeşte valoarea 150. Să se afişeze cel mai mare divizor comun al numerelor citite.
Exemplu: Se citesc:
30 42 15 33 54
Se va afisa: 3
28. Se citeşte din fişierul intrare.in, un text format doar din litere ale alfabetului englez. Să se
determine numărul de apariţii ale fiecărei litere fără a ţine cont dacă este literă mare sau mică.
Se vor afişa doar literele care apar, în ordine alfabetică, însoţite de numărul lor de apariţii.
Exemplu: In intrare.in avem: Ana si Anca au mere
Se va afisa:
Litera a apare de 5 ori. Litera c apare de 1 ori. Litera e apare de 2 ori. Litera i apare de 1 ori.
Litera m apare de 1 ori. Litera n apare de 2 ori. Litera r apare de 1 ori. Litera s apare de 1 ori.
Litera u apare de 1 ori.
29. Se citeşte din fişierul intrare.in, un text format doar din litere ale alfabetului englez. Să se
determine care sunt literele ce nu apar în sir. Afişaţi aceste litere în ordine alfabetică.
Exemplu: In intrare.in avem: Ana si Bianca sunt fete cuminti
Se va afisa:
Literele care nu apar in sir sunt : d, g, h, j, k, l, o, p, q, r, v, w, x, y, z
30. Se citeşte de la tastatură un text de cel mult de 70 de caractere, text format din mai multe
cuvinte separate prin spaţii, virgulă şi punct. Căutaţi şi afişaţi doar cuvintele care încep cu o
vocală.