Sunteți pe pagina 1din 9

1. Se citesc numere intregi de la tastatura pana la intalnirea lui 0.

Cerinte:
a) Sa se afiseze numerele citite
b) Sa se afiseze numerele care au exact k divizori si suma acestora(
k dat)
void main()
{ int...
cout<<"k="; cin>>k;
n=0;
do
{ cout<<"x="; cin>>x;
if(x!=0)
{
n++;
V[n]=x;
}
}while(x!=0);
for(i=1;i<=n;i++;
cout<<V[i]<<" "; cout<<endl;
s=0;
for(i=1;i<=n;i++)
{
nr.div=0;
for(d=1;d<=V[i];d++)
if(V[i]%d==0)
nr.div++;
if(nr.div==k)
{
cout<<V[i]<<" ";
s=s+V[i];
}
}
cout<<endl<<s;
getch();
}
2. Se citesc de la tastatura n numere naturale mai mici decat 1000. Cerinte:
a) sa se afiseze numerele citite
b) sa se afiseze produsul cifrelor diferite de zero pentru fiecare
numar citit.
void main()
{
int ...
cout<<"n="; cin>>n;
for(i=1;i<=n;i++)
{
cout<<"V["<<i<<"]="; cin>>V[i];
}
for(i=1;i<=n;i++)
cout<<V[i]<<" ";
cout<<endl;
for(i=1;i<=n;i++)
{
p=1;
while(V[i]!=0)
{
uc=V[i]%10;
if(uc!=0)
p=p*uc;
V[i]=V[i]/10;
}
cout<<p<<" ";

}
getch();
}
3. Se citesc de la tastatura numerele naturale n si b. Cerinte:
a) Afisati conversia numarului din baza 10 in baza b
b) Explicati algoritmul utilizat
void main()
{
int b; long n;
cout<<"n="; cin>>n; cout<<"b="; cin>>b;
while(n!=0)
{
n=n%b;
nr=p*n+nr;
p=p*10;
n=n/10;
}
cout<<nr;
getch();
}
Se imparte numarul la baza pana cand se obtine catul 0. La primul pas ima
prtitul e numarul care se imparte la baza samd.
Rezultatul e dat de resturile luate in ordinea inversa obtinerii lor.
4. Scrieti un program care determina toate numerele naturale perfecte mai mici d
ecat un numar natural n, citit de la tastatura.
Un numar este perfect daca este egal cu suma divizorilor stricti mai mici deca
t el.
void main()
{
int n,i,d,s;
cout<<"n="; cin>>n;
for(i=1;i<=n;i++)
{
s=0;
for(d=1;d<=i/2;d++)
if(i%d==0)
s=s+d;
if(s==i)
cout<<i<<" ";
getch();
}
5. Dintr-un fisier text se citesc n numere naturale pozitive. Cerinte:
a) afisati numerele citite
b) afisati toate numerele care indeplinesc conditia ca oglinditul l
or sa fie numar par
void main()
{
int n, v[101], i, uc, inv;
ifstream f("nr.txt");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
cout<<endl;
for(i=1;i<=n;i++)
{

copie=v[i];
inv=0;
while(copie!=0)
{
uc=copie%10; inv=inv*10+uc; copie=copie/10;
}
if(inv%2==0)
cout<<v[i]<<" ";
}
f.close();
}
6. Se citeste din fisierul date.in un sir format din numere naturale de cel mult
3 cifre. Cerinte:
a) eliminati din sir numerele care se repeta
b) afisati elementele sirului dat, in ordine crescatoare
void main()
{
int v[101],n,i,j,t;
ifstream f("date.in");
n=0;
while(f>>x)
{
n++;
v[n]=x;
}
for(i=1;i<=n-1;i++)
for(j=2;j<=n;j++)
if(v[i]>v[j])
{
t=v[i];
v[i]=v[j];
v[j]=t;
}
for(i=1;i<n;i++)
if(v[i]==v[j])
{
for(j=i+1;j<=n;j++)
v[j]=v[j+1];
n--;
}
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
getch();
f.close();
}
20. Nodurile pt care gr int=gr ext:
Void main() {
Int a[10][10],i,j,n,k[10],l[10];
Cout<< n= ; Cin >>n;
For(i=1,i<=n;i++) For(j=1;j<=n;j++)
{Cout<< a[ <<i<< ][ <<j<< ]= ; cin>>a[i][j]; }
For(i=1,i<=n;i++) { k=0; for(j=1;j<=n;j++) if(a[i][j]==1; k[i]++; }
for(j=1;j<=n;j++) { l[j]=0; For(i=1,i<=n;i++)
if(a[i][j]==1) l[j]++; }
for(i=1;i<=n;j++) if(k[i]==l[i])
cout<<i<< ;
getch(); }

10. din fisierul mat.in se citeste n, liniile, a) afis elem matricei b) suma elem
de pe diag princip si prod termenilor de pe diag sec
Void main(){
Int a[11][11],i,j,n,s=0,p=1;
Ifstream f( mat.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++)
Cout<<a[i][j]<<
; cout<< endl;
For(i=1,i<=n;i++) {
S=s+a[i]i]; p=p+a[i][n-i+1];}
Cout<< suma= <<s<<endl;
Cout<< produsul= <<p;
Getch(); }
11. mat.in se citeste n si liniile. A) afisati matricea; b) cel mai mare div com de
pe fiecare linii
Void main(){
Int a[11][11],i,j,n,s=0,p=1;
Ifstream f( mat.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++)
Cout<<a[i][j]<<
; cout<< endl;
For(i=1,i<=n;i++)
{ x=a[i][1]; For(j=1;j<=n;j++) {
Y=a[i][j]; while(x!=y) if(x>y) x=x-y;
Else if(y>x) y=y-x;}
Cout<<x<< ; } f.close; getch(); }
12. date.in cu n nr. a) sa se formeze si afis prima cf a fiecarui elem, b) afis da
aca nr e palindrom, nu in caz contrar.
Int x,uc,long,nr,inv,copie;
Ifstream f ( date.in ); nr=0;
While(f>>x)
{ while(x!=0)
{Uc=x%10; x=x/1-;}
Nr=nr*10+uc; inv=0; copie=nr;
While(copie!=0)
{uc=copie%10; inv=inv*10+uc; copie=copie/10;}
Cout<<nr<< ;
If(inv==nr) cout<< da ; else cout<< nu ;}
f.close();
13. s1 si s2. A) proprietatea de multime b) daca da, intersectia, diferenta, si
reuniunea
#include<string.h> #include<conio.h> void main() {
Int char s1[51],s2[51];
Cout<< s1= ; cin>>s1; Cout<< s2= ; cin>>s2;
N1=strlen(S1); N2=strlen(s2); ok=1;
For(i=0,i<=n1-1;i++) For(j=i+1;j<=n1;j++) if(s1[i]==s1[j]) ok=0;
For(i=1,i<=n2-1;i++) For(j=1;j<=n2;j++) if(s2[i]==s2[j]) ok=0;
If(ok==1)
{ cout<< intersectia este: ; For(i=0,i<=n1;i++) For(j=0;j<=n2;j++)
If(s1[i]==s2[j]) cout<<s1[i]<<
; cout<<endl;
Cout<< diferenta este: ; : ; For(i=0,i<=n1;i++) ok=1; For(j=0;j<=n2;j++)
If(s1[i]==s2[j]) ok=0; if(ok==1) cout<<s1[i]<<
;
Cout<< reuniunea este: ; For(i=0,i<=n1;i++) cout<<s1[i];
For(i=0;i<=n2;i++) { ok=1; For(j=0;j<=n1;j++) if(s2[i]==s1[j]) ok=0; }
If(ok==1); cout<< s2[i]<<
;}

9.se scrie un nr n, ca suma a 3 nr nat prime cresc in fisierul prime.txt. pt n=1


2, prime.txt va contine 12=2+3+7 si 12=2+5+5
void main()
{
int v[20], n, prim, i, d, k=0;
cout<<"n=";
cin>>n;
for(i=2;i<=n-1;i++)
{
prim=1;
for(d=2;d<=i/2;d++)
if(i%d==0)
prim=0;
if(prim==1)
{
k++;
v[k]=1;
}
}
ofstream f("prime.txt");
for(i=1;i<=k-2;i++)
for(j=1;j<=k-1;j++)
for(l=i;l<=k;l++)
if(v[i]+v[j]+v[l]==n)
cout<<v[i]<<" "<<v[j]<<" "<<v[l]<<endl;
f.close();
}

8.algoritm de generare a primele n nr prime. a) sa se afiseze algoritmul,b) exp


licati algoritmul
a) void main()
{
int n, k, d, prim, x;
cout<<"n=";
cin>>n;
k=0;
x=2;
while(k!=n)
{
prim=1;d=2;
while(d<=x/2&&prim==1)
if(x%d==0)
prim=0;
d++;
}
if(prim==1)
{
cout<<x<<" ";
k++;
}
x++;
}
getch();
}

b) Se cauta divizorii pentru numarul x de la 2 la x/2.Cautarea se opreste in mom


entul in care am gasit pentru x un divizor, deci numarul nu mai este prim.

7. Fisierul "date.in", n nr. naturale nenule.


a) cel mai mare nr. ce se poate forma din cifrele distincte ale elementului mini
m din sir;
b) ordonati crescator elem sirului in fc. de nr. de cifre pare a fiecaruia.
void main()
{
int n,V[101],par[101],C[10],x,i,j,k,t,uc,min,copie,nr;
ifstream f("date.in");
n=0;
while(f>>x)
{
n++;
V[n]=x;
}
min=V[1];
for(i=2;i<=n;i++)
if(V[i]<min)
min=V[i];
for(i=0;i<=9;i++)
C[i]=0;
while(min!=0)
{
uc=min%10;
C[uc]=C[uc]+1;
min=min/10;
}
nr=0;
for(i=0;i>=0;i--)
for(j=1;j<=C[i];j++)
nr=nr*10+i;
cout<<nr<<endl;
for(i=1;i<=n;i++)
{
copie=V[i];
k=0;
while(copie!=0)
{
uc=copie%10;
if(uc%2==0)
k++;
copie=copie/10;
}
par[i]=k;
}
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(par[i]>par[j])
{
t=par[i];
par[i]=par[j];
par[j]=t;
t=V[i];

V[i]=V[j];
V[j]=t;
}
for(i=1;i<=n;i++)
cout<<V[i]<<" ";
f.close();
getch();
}

14 Sa se insereze dupa fiecare vocala codul Ascii corespunzator acesteia .


afisati textul modificat :
#include<string.h>
#include <iostream.h>
#include conio.h>
void main()
{
char s[21];
int i,n;
cout<<"introdu sirul:";
gets(s);
n=strlen(s);
for(i=0;i<=n;i++)
if(strchr("AEIOUaeiou",s[i])!=null)
cout<<s[i]<<(int)s[i];
else
cout<<s[i];
getch();
}
15 Sa se inlocuiasca fiecare vocala cu caracterul' * ' afisati txt modificat
#include<string.h>
#include <iostream.h>
#include conio.h>
void main()
{
char s[21];
int i,n;
cout<<"introdu sirul:";
cin.get(s,21);
n=strlen(s);
for(i=0;i<=n;i++)
if(strlen("AEIOUaeiou",s[i])!=null)
s[i]='*';
cout<<s;
getch();
}
16 determinati secventa de elem de suma maxima
#
#
void main()
{ int n,i,v[101],smax,s,x,y;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++);

{
cout<<"v["<<i<<"]=";
cin>>v[i];
}
smax=0;
for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<=n;j++);
{
s=s+v[j];
if(s>max)
{
smax=s;
x=i;
y=j;
}
}
cout<<smax<<x<<" "<<y<<" ";
}
18.graf. matricea se citeste din fisierul text g1.txt. afisati nod cu grad max
void main()
{
int n,i,j,a[10][10],g[10], max, s;
ifstream f("g1.txt");
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
f>>a[i][j];
}
for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<=n;j++)
s=s+a[i][j];
g[i]=s;
}
max=g[1];
for(i=1;i<=n;i++)
if(g[i]>max)
max=g[i];
cout<<"Nod de grad max:"<<endl;
for(i=1;i<=n;i++)
if(g[i]==max)
cout<<i<<" ";
f.close();
}
19.2 grafuri g1 si g2. matricile se citesc din g1.txt si g2.txt. afisati daca g2
e partial al grafului g1
Void main( )
{ int n1, n2, i, j, a1[10][10], a2[10][10];
ifstream f1( g1.txt );
ifstream f2( g2.txt ); f1>>n1;
for(i=1;i<=n1;i++) for(j=1;j<=n1;j++) f1>>a1[i][j]; f2>>n2; for(i=1;i<=n2;i++)

for(j=1;j<=n2;j++) f2>>a2[i][j]; ok=1; if(n1!=n2) ok=0;


for(i=1;i<=n2;i++) for(j=1;j<=n2;j++) if(a2[i][j]==1&&a1[i][j]==0) ok=0;
if(ok==1) cout<<"G2 graf partial pt G1";
else cout<<"G2 nu este graf partial pt G1"; f1.close();
f2.close(); }
17. graf cu n,m. afisati mesaj daca gf e complet
void main()
{
int n, m;
cout<<"Numar noduri=";
cin>>n;
cout<<"Numar muchii=";
cin>>m;
if(m==(n*(n-1))/2)
cout<<"Graful este complet";
else
cout<<"Graful nu este complet";
getch();
}

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