Sunteți pe pagina 1din 17

fiecare avnd cel mult 50 de cifre.

S se scrie un program care s calculeze suma lor,


folosind iruri n care se memoreaz cifrele numerelor. Rezultatul se va afia n fiierul
umere.out.
int a[51], b[51], c[51],n,m,p;
char s[51];
n=strlen(s);
for(int i=0; i<n; i++)
a[n-i-1]=s[i]-'0';
m=strlen(s);
for(int i=0; i<m; i++)
a[m-i-1]=s[i]-'0';
void adunare()
{
if(n>m)
p=n;
else
p=m;
for(int i=0; i<p; i++)
{
int aux=a[i]+b[i]+t;
int c[i]=aux%10;
t=aux/10;
}
if(t)
c[p++]=t;
}

2.
Se citesc din fiierul pol.in, de pe prima linie, gradele a dou polinoame n,m
(0n,m50). De pe urmtoarele dou linii se citesc dou iruri de numere reale care reprez
nt coeficienii celor dou polinoame, n ordinea cresctoare a gradelor. S se scrie un pr
gram care s construiasc n memorie i s afieze n fiierul pol.out suma polinoamelor.
nii sumei se vor afia cu dou zecimale separai printr-un singur spaiu.
int n,m,p;
for(int i=0; i<=n; i++)
f>>a[i];
for(int i=0; i<=m; i++)
f>>b[i];
void suma()
{ if(n>m)
p=n;
else
p=m;
for(int i=0;i<=p;i++)
c[i]=a[i]+b[i];
while(c[p]==0) c--; }

3.
Se citesc din fiierul pol.in, de pe prima linie, gradele a dou polinoame n,m
(0n,m50). De pe urmtoarele dou linii se citesc dou iruri de numere reale care reprez
nt coeficienii celor dou polinoame, n ordinea cresctoare a gradelor. S se scrie un pr
gram care s construiasc n memorie i s afieze n fiierul pol.out produsul polinoame
icienii produsului se vor afia cu dou zecimale separai printr-un singur spaiu .
void produs()
{
p=n+m;
for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
c[i+j]=c[i+j]+a[i]*b[j];
}

4.
Se citesc din fiierul sort.in, de pe prima linie, 2 numere n i m (1n,m50). De
pe urmtoarele 2 linii se citesc elementele a dou iruri de lungime n, respectiv m, ,
numere ntregi, de maxim 9 cifre, care sunt ordonate cresctor. S se scrie un progra
m care s construiasc n memorie un ir care conine rezultatul interclasrii celor dou
. irul rezultat se va afia n fiierul sort.out.
void interclasare()
{
int i=0, j=0, k=0;
while(i<n && j<m)
if(a[i]<b[j])
c[k++]=a[i++];
else
c[k++]=b[j++];
if(i==n)
while(j<m)
c[k++]=b[j++];
else
while(i<n)
c[k++]=a[i++];
}

5.
Se citesc din fiierul mult.in, de pe prima linie, 2 numere n i m (1n,m50). De
pe urmtoarele dou linii se citesc elementele a dou iruri de lungime n, respectiv m,
numere ntregi, de maxim 9 cifre. Elementele irurilor sunt distincte dou cate dou. Sc
riei un program, care s construiasc n memorie un ir ce va conine intersecia celor do
ri. Rezultatul se va afia n fiierul mult.out.

void intersectie()
{
int p=0;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
if(a[i]==b[j])
c[p++]=a[i];
}

6.
Se citesc din fiierul mult.in, de pe prima linie, 2 numere n i m (1n,m50). De
pe urmtoarele dou linii se citesc elementele a dou iruri de lungime n, respectiv m,
numere ntregi, de maxim 9 cifre. Elementele irurilor sunt distincte dou cate dou. S
se scrie un program care s construiasc n memorie un ir ce va conine diferena dintre p
imul ir i cel de-al doilea ir. Rezultatul se va afia n fiierul mult.out.
int caut(int x[50], int n, int v)
{
for(int i=0; i<n; i++)
if(v==x[i])
return 1;
return 0;
}
void diferenta()
{
int p=0;
for(int i=0; i<n; i++)
if(caut(b,m,a[i])==0)

c[p++]=a[i];

7.
Se citesc din fiierul mult.in, de pe prima linie, 2 numere n i m (1n,m50). De
pe urmtoarele dou linii se citesc elementele a dou iruri de lungime n, respectiv m,
numere ntregi, de maxim 9 cifre. Elementele irurilor sunt distincte dou cate dou. S
se scrie un program, care s construiasc n memorie un ir ce va conine reuniunea celor
dou iruri. Rezultatul se va afia n fiierul mult.out.
int caut(int x[50], int n, int v)
{
for(int i=0; i<n; i++)
if(v==x[i])
return 1;
return 0;
}
void reuniune()
{
int p=0;
for(int i=0; i<n; i++)
c[p++]=a[i];
for(int i=0; i<m; i++)
if(caut(a,n,b[i])==0)
c[p++]=b[i];
}
8.
Se citete din fiierul mult.in, de pe prima linie, un numr n (1n50). De pe
oarea linie se citesc elementele unui ir de lungime n, numere ntregi, de maxim 9 c
ifre. S se scrie un program care s verifice dac irul citit conine numai elemente dist
incte.
int verificare()
{
for(int i=0; i<n; i++)
for(int j=i+1; j<n; j++)
if(a[i]==a[j])
return 0;
return 1;
}

9.
Se citete din fiierul sort.in, de pe prima linie, un numr n (1n50). De pe ur
rea linie se citesc elementele unui ir de lungime n, numere ntregi, de maxim 9 cif
re. S se scrie un program care s realizeze sortarea cresctoare a elementelor irului
folosind metoda seleciei. Rezultatul se va afia n fiierul sort.out.
void selectie()
{
for(int i=0; i<n-1; i++)
{
int poz_min=i;
for(int j=i+1; j<n; j++)
if(a[j]<a[poz_min])
poz_min=j;
int aux=a[i];
a[i]=a[poz_min];
a[poz_min]=aux;
}

10.
Se citete din fiierul sort.in, de pe prima linie, un numr n (1n50). De pe ur
rea linie se citesc elementele unui ir de lungime n, numere ntregi, de maxim 9 cif
re. S se scrie un program care s realizeze sortarea cresctoare a elementelor irului
folosind metoda inseriei. Rezultatul se va afia n fiierul sort.out.
void insertie()
{
for(int i=1;i<n;i++)
{
int aux=a[i];
int j=i-1;
while(j>=0 && a[j]>aux)
a[j+1]=a[j];
j--;
}
a[j+1]=aux;
}

11.
Se citete din fiierul sort.in, de pe prima linie, un numr n (1n50). De pe ur
rea linie se citesc elementele unui ir de lungime n, numere ntregi, de maxim 9 cif
re. S se scrie un program care s realizeze sortarea cresctoare a elementelor irului
folosind metoda numrrii. Se va ine cont de faptul c n ir poate s apar un element
i multe ori. Rezultatul se va afia n fiierul sort.out.
void numarare()
{
for(int i=0; i<n; i++)
for(int j=i+1; j<n; j++)
if(a[i]>a[j])
nr[i]++;
else
nr[j]++;
for(int i=0; i<n; i++)
b[nr[i]]=a[i];
}

12.
Se citete din fiierul cmmdc.in, de pe prima linie, un numr natural n (1n50).
pe urmtoarea linie se citesc n numere naturale de maxim 9 cifre.. S se scrie un p
rogram care s calculeze cel mai mare divizor comun al celor n numere de pe linia
a doua a fiierului. Rezultatul se va afia n fiierul cmmdc.out.
int cmmdc(int a, int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int cmmdc_sir()
{
int d=0;

for(int i=0; i<n; i++)


d=cmmdc(d,a[i]);
return d;

13.
Se citete din fiierul exista.in, de pe prima linie, un numr n (1n50). De pe
oarea linie se citesc n numere naturale de maxim 9 cifre reprezentnd elementele u
nui ir. S se scrie un program care s verifice dac exist n ir trei elemente alturat
e au acelai numr de divizori.
int nr_div(int x)
{
int nr=0, i;
for(int i=1; i*i<x; i++)
if(x%i==0)
nr+=2;
if(i*i==x)
nr++;
return nr;
}
int verificare()
{
for(int i=0; i<n-2)
if(nr_div(a[i])==nr_div(a[i+1]) && (nr_div(a[i+1])==nr_div(a[i+2])))
return 1;
return 0;
}

14.
Se citete din fiierul progresie.in, de pe prima linie, un numr n (1n50). De
urmtoarea linie se citesc elementele unui ir de lungime n, numere ntregi, de maxim
9 cifre.. S se scrie un program care s verifice dac elementele irului formeaz o progr
esie aritmetic sau o progresie geometric. n caz afirmativ s se afieze tipul progresie
i i raia, iar n caz negativ s se scrie un mesaj corespunztor n fiierul progresie.ou
int progresie_aritmetica()
{
for(int i=2; i<=n; i++)
if(2*a[i]!=a[i-1]+a[i+1])
return 0;
return 1;
}
int progresie_geometrica()
{
for(int i=2; i<=n-1; i++)
if(a[i]*a[i]!=a[i-1]*a[i+1])
return 0;
return 1;
}

15.
Se citete un text din fiierul text.in. Textul are mai multe linii i mai multe
cuvinte. Pe fiecare linie cuvintele sunt desprite prin cte un singur spaiu sau prin
semne de punctuaie. S se afieze n fiierul text.out, pe linii consecutive, toate lit
le care apar n text, mpreun cu frecvenele lor de apariie.
int fr[26];
char s[201];
int main()
{

while(f.getline(s,201))
{
strupr(s);
for(int i=0; i<strlen(s); i++)
if(s[i]>='A' && s[i]<='Z')
fr[s[i]-'A']++;
}
for(int i=0; i<26; i++)
if(fr[i]>0)
fout<<(char)(i+'A')<<"->"<<fr[i]<<endl;
return 0;

16.
S se afieze n fiierul prietene.out toate perechile de numere prime prietene
ai mici dect un numr natural n citit de la tastatur (1n30000). Dou numere prime se nu
esc prietene dac diferena lor n modul este mai mic sau egal cu 2.
int prim(int x)
{
if(x<2 || x>2 && x%2==0)
return 0;
for(int d=2; d*d<=x; d++)
if(x%d==0)
return 0;
return 1;
}
int main()
{
if(n>=4)
{
fout<<"(2,3) ";
for(int i=3; i+2<n; i+=2)
if(prim(i) && prim(i+2))
fout<<" ,("<<i<<", "<<i+2<<")";
}
else
fout<<"Nu exista";
}

17.
Se citete un numr natural n de la tastatur (1n30000). S se verifice dac n es
numr puternic. Un numr este puternic dac are mai muli divizori dect orice numr mai mi
dect el.
int nr_div(int x)
{
int nr=0, i;
for(int i=1; i*i<x; i++)
if(x%i==0)
nr+=2;
if(i*i==x)
nr++;
return nr;
}
int puternic()
{
int div_x=nr_div(x);
for(int i=1; i<x; i++)
if(nr_div(i)>=div_x)
return 0;
return 1;
}

18.
Se citete de la tastatur un numr natural k (1k50). S se determine cel mai mic
numr natural care are exact k divizori.
int nr_div(int x)
{
int nr=0, i;
for(int i=1; i*i<x; i++)
if(x%i==0)
nr+=2;
if(i*i==x)
nr++;
return nr;
}
int k_divizori()
{
i=1;
while(nr_div(i)!=k)
i++;
return i;
}

19.
Se citete din fiierul mat.in, de pe prima linie, un numr natural n (1n50) i
e urmtoarele n linii o matrice ptratic de numere ntregi, de maxim 9 cifre. S se verif
ice dac matricea este ptrat magic (sumele elementelor pe linii, coloane i de pe cel
e dou diagonale, este aceeai).
int matrice_patratmagic()
{ int s1=0, s2=0;
for(int i=0; i<n; i++)
{s1=s1+a[i][i];
s2=s2+a[i][n-i-1];
}
for(int i=0; i<n; i++)
{ s1=0;
for(int j=0; j<n; j++)
s1=s1+a[i][j];
if(s1!=s2) return 0;
}
for(int j=0; i<n; i++)
{s1=0;
for(int i=0; j<n; j++)
s1=s1+a[i][j];
if(s1!=s2) return 0;
}
return 1;}
20.
Se citete din fiierul mat.in , de pe prima linie, un numr natural n (1n50),
pe urmtoarele n linii o matrice ptratic ce conine numere naturale de maxim 4 cifre.
S se numere elementele cu numr par de cifre aflate n triunghiul de sub diagonala p
rincipal a matricei i s se afieze rezultatul pe ecran.
int nr_cifre(int x)
{
int nr=0;
do

nr++;
x/=10;

}
while(x);
return nr;

}
void tr_subdp()
{
int val=0;
for(int i=1; i<n; i++)
for(int j=0; j<i; j++)
if(nr_cifre(a[i][j])%2==0)
val++;
cout<<val;
}

21.
Se citete din fiierul mat.in, de pe prima linie, un numr natural n (1n50),
pe urmtoarele n linii o matrice ptratic ce conine numere naturale de maxim 4 cifre.
S se calculeze suma elementelor prime aflate n triunghiul de deasupra diagonalei p
rincipale a matricei i s se afieze rezultatul pe ecran.
int prim(int x)
{
if(x<2 || x>2 && x%2==0)
return 0;
for(int d=2; d*d<=x; d++)
if(x%d==0)
return 0;
return 1;
}
void tr_deasdp()
{
int s=0;
for(int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
if(prim(a[i][j]))
s=s+a[i][j];
cout<<s;
}

22.
Se citete din fiierul mat.in, de pe prima linie, un numr natural n (1n50),
pe urmtoarele n linii o matrice ptratic ce conine numere naturale de maxim 4 cifre.
S se verifice dac exist elemente cu suma cifrelor par n triunghiul de sub diagonala s
ecundar a matricei i s se afieze rezultatul pe ecran.
int suma_cifre(int x)
{
int s=0;
do
{
s=s+x%10;
x/=10;
}
while(x);
return s;
}
void tr_subds()
{
int ok=0;

for(int i=1; i<n; i++)


for(int j=n-i; j<n; j++)
if(suma_cifre(a[i][j])%2==0)
ok=1;

if(ok==1)
cout<<"Exista";
else
cout<<"Nu exista";

23.
Se citete din fiierul mat.in, de pe prima linie, un numr natural n, (1n50)
pe urmtoarele n linii o matrice ptratic ce conine numere naturale de maxim 4 cifre.
S se verifice dac toate elementele aflate n triunghiul de deasupra diagonalei secun
dare a matricei au aceeai paritate i s se afieze rezultatul pe ecran.

int tr_deasds()
{
for(int i=0; i<n-1; i++)
for(int j=0; j<n-i-1; j++)
if(a[i][j]%2!=a[0][0]%2)
return 0;
return 1;
}
24.
Se citesc din fiierul mat1.in de pe prima linie, dou numere naturale n1(1n150
i m1 (1m1 50) i de pe urmtoarele n1 linii o matrice cu n1 linii i m1 coloane. Analog
se citesc din fiierul mat2.in, de pe prima linie, dou numere naturale n2 (1n250) i
(1n50) i de pe urmtoarele n2 linii o matrice cu n2 linii i m2 coloane. Elementele ce
lor 2 matrice sunt numere reale. S se scrie un program n care se calculeaz produsul
celor dou matrice. Dac produsul se poate calcula atunci se va afia matricea rezult
at n fiierul mat.out, iar n caz contrar se va afia un mesaj corespunztor.
void produs()
{
for(int i=0; i<n1; i++)
for(int j=0; j<m2; j++)
for(int k=0; k<m1; k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
int main()
{
if(m1!=n2)
cout<<"Nu se poate calcula";
else
for(int i=0; i<n1; i++)
{
for(int j=0; j<m2; j++)
fout<<c[i][j]<<" ";
fout<<endl;
}
return 0;
}

25.
Se citesc din fiierul mat.in, de pe prima linie, dou numere naturale n i m (1
,m50) i de pe urmtoarele n linii o matrice cu n linii i m coloane cu elemente numere
ntregi, de maxim 9 cifre. S se scrie un program care afieaz n fiierul mat.out, c
pe linie, numerele din matrice care sunt n acelai timp maxime pe linia i minime pe
coloana pe care se afl. Dac nu exist astfel de numere se va afia un mesaj corespunzt
or.

int max_linie(int i)
{
int maxim=a[i][0];
for(int j=1; j<m; j++)
if(a[i][j]>maxim)
maxim=a[i][j];
return maxim;}
int min_coloana(int j)
{
int minim=a[0][j];
for(int i=0; i<n; i++)
if(a[i][j]<minim)
minim=a[i][j];
return minim;
}
void prelucrare()
{
for(int i=0; i<n; i++)
max[i]=max_linie[i];
for(int j=0; j<m; j++)
min[j]=min_linie[j];
int ok=0;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
if(a[i][j]==max[i] && a[i][j]==min[j])
{
ok=1;
fout<<a[i][j]<<" ";
}
if(ok==0)
fout<<"Nu exista";
}
26.
Se citesc din fiierul mat.in , de pe prima linie, dou numere naturale n i m (
1n,m50) i de pe urmtoarele n linii o matrice cu n linii i m coloane cu elemente numer
e naturale, de maxim 9 cifre. S se scrie un program care afieaz n fiierul mat.out,
unul pe linie, numerele din matrice care au numr maxim de divizori
int nr_div(int x)
{
int nr=0, i;
for(int i=1; i*i<x; i++)
if(x%i==0)
nr+=2;
if(i*i==x)
nr++;
return nr;
}
void citire()
{
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
{
b[i][j]=nr_div(a[i][j]);
if(b[i][j]>max_div)
max_div=b[i][j];
}
}
void afisare()

for(int i=0; i<n; i++)


for(int j=0; j<m; j++)
if(b[i][j]==max_div)
g<<a[i][j]<<endl;

27.
Se citesc din fiierul mat.in , de pe prima linie, patru numere naturale n,
m, l i c (1n,m50 , 1l n, 1c m) i de pe urmtoarele n linii o matrice cu n linii i
, cu elemente numere ntregi, de maxim 9 cifre. S se scrie un program care s tearg d
in matrice linia l i coloana c i afieaz matricea rezultat n fiierul mat.out.
void sterge()
{
for(int i=l+1; i<n; i++)
for(int j=0; j<m; j++)
a[i-1][j]=a[i][j];
n--;
for(int j=c+1; j<m; j++)
for(int i=0; i<n; i++)
a[i][j-1]=a[i][j];
m--;
}

28.
Se citete un numr natural n (1n15). S se afieze n fiierul Pascal.out triu
i Pascal care are n + 1 linii i n + 1 coloane. Regulile dup care se construiete tri
unghiul lui Pascal sunt:
a.
Pe coloana 0 i pe diagonala principal se pune 1.
b.
Restul elementelor din triunghi se obin adunnd elementul aflat pe linia a
nterioar pe aceeai coloan cu el cu elementul aflat pe linia anterioar i pe coloana a
nterioar.

void pascal()
{ for(int i=0; i<=n; i++)
{a[i][0]=1;
a[i][i]=1;
for(int j=1lj<i; j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}}
29.
Se citesc de la tastatur numitorii i numrtorii (numere ntregi de maxim 9 cifr
e) a dou fracii. S se scrie un program care simplific suma celor dou fracii i afiea
cran numitorul i numrtorul fraciei rezultate.
struct fractie
{
int numarator, numitor;
} A,B,S;
void citire()
{
cin>>A.numarator>>A.numitor>>B.numarator>>B.numitor;
}
int cmmdc(int a, int b)
{
while(b)
{
int r=a%b;
a=b;
b=r;
}

return a;
}
void suma()
{
S.numarator=A.numarator*B.numitor+B.numarator*A.numitor;
S.numitor=A.numitor*B.numitor;
int x=cmmdc(S.numarator, S.numitor);
S.numarator/=x;
S.numitor/=x;
cout<<S.numarator<<" "<<S.numitor;
}

30.
Se citesc de la tastatur dou cuvinte de maxim 20 de litere. S se scrie un p
rogram care verific dac unul este anagrama celuilalt. Un cuvnt este anagram pentru a
ltul dac cele dou cuvinte conin aceleai litere de acelai numr de ori, dar nu neaprat
ceeai ordine.

int anagrame()
{ if(strlen(a)!=strlen(b))
return 0;
for(int i=0; i<strlen(a); i++)
{char *p=strchr(a,b[i]);
if(p==NULL)
return 0;
strcpy(p,p+1);
}
return 1;}
31.
Se citete din fiierul sir.in, de pe prima linie, un numr natural n (1n50). D
e urmtoarea linie se citesc n numere naturale de maxim 9 cifre. S se scrie un prog
ram care s afieze pe ecran cte din elementele irului sunt termeni ai irului lui Fibon
acci. (irul lui Fibonacci 1,1,2,3,5,8,13,).
void citire()
{
for(int i=0; i<n; i++)
{
fin>>a[i];
if(a[i]>max)
max=a[i];
}
}
void Fibo()
{
if(max<1) return;
Fibo[0]=1;
Fibo[1]=1;
nf=2;
while(Fibo[nf-2]+Fibo[nf-1]<=max)
{
Fibo[nf]=Fibo[nf-2]+Fibo[nf-1];
nf++;

}
}
void prelucrare()
{
int nr=0;
for(int i=0; i<n; i++)
for(int j=0; j<nf; j++)
if(a[i]==Fibo[j])

}
cout<<nr;

nr++;
break;

32.
Se citesc din fiierul numere.in doua numere naturale de maxim 9 cifre. Se c
ere s se afieze pe ecran mesajul DA, dac cele dou numere sunt termeni consecutivi ai
ului lui Fibonacci, respectiv mesajul NU, daca cele dou numere nu sunt termeni cons
ecutivi ai irului lui Fibonacci. (irul lui Fibonacci 1,1,2,3,5,8,13,).
int main()
{
int c;
if(a>b)
{
int aux=b;
b=a;
a=aux;
}
while(b>1)
{
c=b-a;
b=a;
a=c;
}
if(a==b && b==1)
cout<"DA";
else
cout<<"NU";
return 0;
}

33.
Se citete din fiierul sir.in, de pe prima linie, un numr natural n (1n50). D
e urmtoarea linie se citesc n numere naturale de maxim 9 cifre. S se afieze toate p
erechile de elemente egal deprtate de mijloc, care au aceeai suma a cifrelor.
int suma_cifre(int x)
{
int s=0;
do
{
s=s+x%10;
x/=10;
}
while(x);
return s;
}
void prelucrare()
{
for(int i=0; i<n/2; i++)
if(suma_cifre(a[i])==suma_cifre(a[n-i-1]))
cout<<"("<<a[i]<<", "<<a[n-i-1]<<")\n";
}

34.
Se citete din fiierul text.in un ir cu maxim 255 de caractere, format doar di
n litere mici i spaii. Se consider cuvnt orice secven format doar din litere adiacen

Cuvintele sunt separate prin exact un spaiu. S se afieze cuvintele palindrom din t
ext. Dac nu exist cuvinte palindrom atunci se va afia mesajul NU EXIST.
int palindrom(char *p)
{
for(int i=0; i<strlen(p)/2; i++)
if(p[i]!=p[strlen(p)-i-1])
return 0;
return 1;
}
void prelucrare()
{
char *p=strtok(s,' ');
int ok=0;
while(p)
{
if(palindrom(p))
{
cout<<p<<"\n";
ok=1;
}
p=strtok(NULL,' ');
}
if(ok==0)
cout<<"Nu exista";
}

35.
Se citete din fiierul text.in un ir cu maxim 255 de caractere, format doar d
in litere mici i spaii. Se consider cuvnt orice secven format doar din litere adiace
. Cuvintele sunt separate prin exact un spaiu. S se afieze n fiierul rime.out toate
echile de cuvinte care rimeaz. Dou cuvinte rimeaz dac au ultimele dou litere identice
.

int verific(char *a, char *b)


{
int n=strlen(a);
int m=strlen(b);
if(a[n-1]==b[m-1] && a[n-2]==b[m-2])
return 1;
return 0;
}
int main()
{
char *p=strtok(s,' ');
int n=0;
while(p)
{
strcpy(m[n++],p);
p=strtok(NULL,' ');
for(int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
if(verific(m[i],m[j]))
cout<<m[i]<<" "<<m[j]<<endl;
return 0;
}
}
36.
Se citete din fiierul text.in un ir de maxim 255 de caractere. S se determine
cea mai lung secven de cifre alturate din ir. Secven a gsit se va afia pe ecran.
char cif[]="0123456789";
voidlmax()

for(int i=0; i<strlen(a); i++)


if(strchr(cif,a[i]))
lc++;
else if(lc>lmax)
{
lmax=lc;
poz=i-lmax;
}
if(lc>lmax)
{
lmax=lc;
poz=i-lmax;
}

}
void afisare()
{
for(int k=poz; k<poz+lmax; k++)
cout<<a[k];
}

37.
Se citete din fiierul text.in un ir cu maxim 255 de caractere, format doar di
n litere (mici i mari) i spaii. Se consider cuvnt orice secven format doar din lite
iacente. Cuvintele sunt separate prin exact un spaiu. S se afieze cuvintele irului d
at, n ordine alfabetic.
void sortare()
{
char *p;
int n=0;
p=strtok(a,' ');
while(p)
{
strcpy(m[n++],p);
p=strtok(NULL,' ');
}
for(int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
if(strcmp(m[i],m[j])>0)
{
char aux[31];
strcpy(aux,m[i]);
strcpy(m[i],m[j]);
strcpy(m[j],aux);
}
}

38.
Se citete din fiierul text.in un ir cu maxim 255 de caractere, format doar di
n litere (mici i mari) i spaii. Se consider cuvnt orice secven format doar din lite
iacente. Cuvintele sunt separate prin exact un spaiu. S se afieze cuvintele irului d
at, n ordinea cresctoare a lungimilor lor, cte un cuvnt pe fiecare linie a ecranului
.
void cuvinte()
{
p=strtok(a,' ');
while(p)
{
strcpy(cuv[n++],p);

p=strtok(NULL,' ');

}
void sortare()
{
for(int i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(strlen(cuv[i])>strlen(cuv[j]))
{
strcpy(aux,cuv[i]);
strcpy(cuv[i], cuv[j]);
strcpy(cuv[j], aux);
}
}

39.
Fiierele X.txt si Y.txt con in fiecare numele a 7 persoane, cte un nume pe f
iecare linie avnd cel mult 25 caractere. tiind c, n fiecare fiier numele sunt memora
te n ordine alfabetic, scrie i un program care s citeasc din cele dou fiiere numele
ieze pe ecran toate numele din cele dou fiiere n ordine alfabetic, separate printr-u
n singur spa iu. Dac un nume se afl n ambele fiiere, atunci el se va afia o singur d
void sortare_nume()
{
int i=1, j=1;
while(i<=7 && j<=7)
{
if(strcmp(numex, numey)>0)
{
cout<<numey<<"\n";
finy>>numey;
j++;
}
else if(strcmp(numex, numey)<0)
{
cout<<numex<<"\n";
finx>>numex;
i++;
}
else
{
cout<<numex<<"\n";
fin>>xnumex;
finy>>numey;
i++;
j++;
}
}
while(i<=7)
{
cout<<numex<<"\n";
finx>>numex;
i++;
}
while(j<=7)
{
cout<<numey<<"\n";
finy>>numey;
j++;
}

40.Se citesc dou triplete de numere naturale (d1,m1,y1), respectiv (d2,m2,y2). S s


e verifice
dac cele dou triplete reprezint dou date calendaristice valide, n
care d1,d2 = ziua (day), m1,m2 = luna (month), y1,y2 = anul (year). Se consider a
n bisect orice an care fie este divizibil cu 400, fie este divizibil cu 4 dar nu
i cu 100. Dac cele dou triplete reprezint dou date calendaristice valide, atunci n i
oteza c prima dat reprezint ziua de natere a unei persoane, iar a doua dintre ele re
prezint data curent, s se determine, n ani mplinii, vrsta persoanei la data curent.
ranteaz c prima dintre date este anterioar celei de-a doua.
int d1, m1, y1, d2, m2, y2, nr_zile[13]= {0,31,29,31,30,31,30,31,31,30,31,30,31}
;
int an_bisect(int y)
{
if(y%400==1 && y%4==0 && y%100!=0)
return 1;
return 0;
}
int valid(int d, int m, int y)
{
if(m>12 || m<1) return 0;
if(d<1 \\ d>nr_zile[m]) return 0;
if(!an_bisect(y) && m==2 && d==29) return 0;
if(y<1) return 0;
return 1;
}
int varsta()
{
int v=y2-y1;
if(m1>m2) v--;
else if(m1==m2 && d1>d2) v--;
return v;
}
int main()
{
if(valid(d1,m1,y1) && valid(d2,m2,y2))
cout<<varsta();
else
cout<<"Invalid";
return 0;
}