Sunteți pe pagina 1din 14

SUBIECTE SI REZOLVARI C++

PENTRU EXAMENUL DE ATESTAT LA


INFORMATIC
probleme rezolvate atestat informatica p1
probleme rezolvate atestat informatica p3
probleme rezolvate atestat informatica p4
25.Se citete de la tastatura un numr natural nenul n care are cel mult 9 cifre. Sa se afieze in
fiierul Date.out numrul k, natural, astfel nct produsul 1*2**(k-1)*k sa aib o valoare
cat mai apropiata de numrul n. De exemplu, daca se citete numrul n=25 fiierul Date.out
are urmtorul coninut: 4. iar daca se citete numrul n=119 fiierul Date.out are urmtorul
coninut: 5
#include<iostream.h>
#include<fstream.h>
void main()
{int k,p,r,n;
cout<<"n=";cin>>n;
k=1;
fstream g("date.out",ios::out);
p=1;
while(p<=n)
{p=p*k;
k++;}
p=p/(k-1);
r=p*k;
if((n-p)<=(r-n))
g<<"numarul k este "<<k-2;

else
g<<"numalul k este "<<k-1;
g.close();
}
27.Scriei un program care citete un numr natural n>1 cu maximum 9 cifre, si afieaz
valoarea celui mai mic divizor prim a lui n, precum si puterea la care acest divizor apare in
descompunerea in factori primi a numrului n.
#include<iostream.h>
int n,p,c;
void cmmd(int n)
{int gasit=0,d=2;
while((d<n/2)&&(gasit==0))
{if(n%d==0)
{c=d;
gasit=1;}
else
d++;}
p=0;
while(n%c==0)
{n=n/c;
p=p+1;}}
void main()
{cout<<"n=";cin>>n;
cmmd(n);
cout<<c<<" la puterea "<<p;
}

28.S se scrie un program care s calculeze i s afieze pe ecran produsul cifrelor pare i
suma cifrelor impare a unui numr natural n citit de la tastatur.
#include<iostream.h>
unsigned int n, s, p=1, c;
void main()
{
cin>>n;
while(n)
{
c=n%10;
if(c%2==0)
p=p*c;
else
s=s+c;
n=n/10;
}
cout<< p <<" "<< s;
}
29.Sa se verifice daca doua cuvinte introduse de la tastatura (cuvintele avnd maxim 50 de
caractere fiecare) sunt rime, adic ultimele p caractere ale celor doua cuvinte coincid, unde p
(2<=p<=10) este dat.
#include<iostream.h>
#include<string.h>
char s1[51], s2[51];
int p, x, y, ok=0;
void main()
{

cin>> s1>>s2>>p;
x=strlen(s1)-1;
y= strlen(s2)-1;
for( int i=1;i<=p && ok==0 ;i++)
{
if(s1[x]!=s2[y])
ok=1;
x--;
y--;
}
if(ok)
cout<<"Nu sunt rime";
else
cout<<"Sunt rime";
}
30.Scriei un program care construiete o matrice ptrat de ordin n format din valorile 1 si 2
astfel nct elementele de pe diagonala principala si secundar sa fie egale cu 1 iar restul
elementelor cu 2. Valoarea lui n se citete de la tastatur: n numr natural (2<23), iar matricea
se va afia pe ecran, cate o linie a matricei pe fiecare rnd pe ecran cu spatii intre elementele
fiecrei linii.
Exemplu: Fie n=5. Se va afia:
12221
21212
22122
21212
12221
#include<iostream.h>

int a[10][10], i, j, n;
void main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j || i+j==n+1)
a[i][j]=1;
else
a[i][j]=2;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<< a[i][j];
cout<< endl;
}
}
probleme rezolvate atestat informatica p1
probleme rezolvate atestat informatica p3
probleme rezolvate atestat informatica p4
Probleme rezolvate c++ atestat informatica 2011

1.Scriei programul care citete un numr natural nenul n cu cel mult 4 cifre i determin cel
mai mic numr prim mai mare dect n
2. Se citeste un numar intreg strict pozitiv cu cel mult noua cifre. Sa se verifice daca cifrele
lui sunt in ordine strict crescatoare.

3. Se citesc doua numere intregi strict pozitive. Sa se calculeze si sa se afiseze c.m.m.d.c al


lor.
4. Se citeste de la tastatura un numar natural n (1<n<100) si un sir x de n valori intregi. Sa se
construiasca un vector y care sa contina numai elementele pare din vectorul x.
5. Se citeste de la tastatura un numar natural n (1<n<100) si un sir x de n valori intregi.
Verificati daca o valoare a, citita de la tastatura se gaseste in vector si daca da, afisti pozitiile
pe care apare si numarul de aparitii.
6. Se citeste de la tastatura un numar natural n (1<n<100) si un sir x de n valori intregi. Sa se
numere elementele din vectorul x care se gasesc in intervalul [a,b] cu a si b numere intregi
citite de la tastatura, si sa se construiasca un alt vector cu cele care nu apartin intervalului.
7. Fiierul text bac.txt conine, pe o singur linie, cel mult 1000 de numere naturale nenule cu
cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un program C/C+
+ care citete de la tastatur un numr natural nenul n (n999) i numerele din fiierul
bac.txt i care afieaz pe ecran, separate prin cte un spaiu, toate numerele din fiier care
sunt divizibile cu n. Dac fiierul nu conine niciun astfel de numr, atunci se va afia pe
ecran mesajul NU EXISTA.
Exemplu: dac fiierul bac.txt conine numerele: 3 100 40 70 25 5 80 6 3798,
pentru n=10 atunci pe ecran se va afia: 100 40 70 80
8. Se citesc trei numere intregi strict positive. Sa se afiseze in ordine crescatoare. Sa se
verifice daca ele formeaza sau nu o progresie geometrica.
9. Scriei un program C/C++ care citete de la tastur un numr natural n cu cel mult 8 cifre
(n10) i care creeaz fiierul text NR.TXT ce conine numrul n i toate prefixele nenule
ale acestuia, pe o singur linie, separate prin cte un spaiu, n ordine descresctoare a valorii
lor.
Exemplu: pentru n=10305 fiierul NR.TXT va conine numerele:
10305 1030 103 10 1
10. Scriei un program C/C++ care citete de la tastatur dou numere naturale nenule n i m
(2m10, 2n10) i care construiete n memorie i apoi afieaz o matrice A cu n linii
(numerotate de la 1 la n) i m coloane (numerotate de la 1 la m) cu proprietatea c fiecare
element Aij memoreaz cea mai mic dintre valorile indicilor i i j (1in, 1jm).
Matricea se va afia pe ecran, cte o linie a matricei pe cte o linie a ecranului, elementele
fiecrei linii fiind separate prin cte un spaiu.

Exemplu: pentru n=4 i m=5 se va afia matricea alturat.


11111
12222
12333
12344
11.Scriei un program C/C++ care citete de la tastatur dou caractere c1 i c2, i un text
avnd cel mult 250 caractere (spaii i litere ale alfabetului englez), pe care l modific
nlocuind toate apariiile caracterului memorat n c1 cu cel memorat n c2 i toate apariiile
caracterului memorat n c2 cu cel memorat n c1. Programul afieaz pe linii separate ale
ecranului att textul iniial ct i textul obinut dup efectuarea nlocuirilor.
Exemplu: dac pentru c1 se citete a, pentru c2 se citete o iar textul citit este:
hocus pocus preparatus
se va afia :
hocus pocus preparatus
hacus pacus preporotus
12. S se scrie un program C/C++ care citete de la tastatur un cuvnt format din cel mult 20
de caractere, doar litere mici ale alfabetului englez. Programul determin transformarea
cuvntului citit prin nlocuirea fiecrei vocale a cuvntului, cu litera mare corespunztoare,
restul literelor nemodificndu-se, ca n exemplu. Programul afieaz pe ecran cuvntul
obinut, pe o singur linie. Se consider vocale literele din mulimea {a,e,i,o,u}.
Exemplu: pentru cuvntul bacalaureat se va afia pe ecran: bAcAlAUrEAt
13. Scriei definiia complet a subprogramului count care are 2 parametri prin care primete
un tablou unidimensional cu maximum 100 de numere reale i numrul de elemente din
tablou. Subprogramul returneaz numrul de elemente din tabloul unidimensional care sunt
mai mari sau cel puin egale cu media aritmetic a tuturor elementelor din tablou.
Exemplu: dac tabloul are 6 elemente i este de forma (12, 7.5, 6.5, 3, 8.5, 7.5),
subprogramul va returna valoarea 4.
14. Scriei definiia complet a subprogramului interval care are 2 parametri prin care
primete un tablou unidimensional cu maximum 100 de numere naturale mai mici dect 1000
i numrul de elemente din tabloul unidimensional. Subprogramul returneaz numrul de

elemente din tabloul unidimensional care aparin intervalului nchis determinat de primul i
respectiv ultimul element al tabloului.
Exemplu: dac tabloul are 6 elemente i este de forma (12,27,6,8,9,2), subprogramul va
returna valoarea 5.
15. Se citeste de la tastatura un numar natural n (1<n<100) si un sir x de n valori intregi. Sa
se ordoneze crescator pana la o pozitie k citita de la tastatura si descrescator de la pozitia k la
n.
REZOLVARI
1)
#include<iostream.h>
void
{int
cin>>n;
do
{ok=0;
n=n+1;
for(i=2;i<=n/2;i++)
if(n%i==0)
ok=1;}
while(ok==1);
cout<<n;
}

main()
i,n,ok=0;

2)
#include<iostream.h>
void
{int
cin>>n;
n1=n;
while(n!=0)
{v[j]=n%10;
j++;
n=n/10;}
for(i=1;i<j-1;i++)
if(v[i]<=v[i+1])
c=0;
if(c)
cout<<"cifrele
numarului

main()
n,c=1,i,v[20],j=1,n1;

"<<n1<<"

sunt

in

ordine

crescatoare";

else
cout<<"cifrele numarului "<<n1<<" nu sunt in ordine crescatoare";}
3)
#include<iostream.h>
void
{int
cin>>a;
cin>>b;
while(a!=b)
{if(a>b)
a=a-b;
else
b=b-a;}
cout<<a;}

main

()
a,b;

4)
#include<iostream.h>
void
{int
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{cout<<"v["<<i<<"]=";cin>>v[i];}
for(i=1;i<=n;i++)
if(v[i]%2==0)
{j=j+1;
y[j]=v[i];}
for(i=1;i<=j;i++)
cout<<y[i]<<" ";}

main()
v[20],n,i,y[20],j=0;

5)
#include<iostream.h>
void
{int
cout<<"n=";cin>>n;
cout<<"a=";cin>>a;
for(i=1;i<=n;i++)
{cout<<"v["<<i<<"]=";cin>>v[i];}
for(i=1;i<=n;i++)
if(v[i]==a)
{nr=nr+1;

main()
v[20],a,n,i,j=0,x[20],nr;

j=j+1;
x[j]=i;}
cout<<"nr
"<<a<<"
apare
in
vector
cout<<endl;
for(i=1;i<=j;i++)
cout<<"nr "<<a<<" apare pe pozitia "<<x[i]<<endl;}

de

"<<nr<<"

ori";

6)
#include<iostream.h>
void
main()
{int
v[20],m=0,a,b,n,i,j=1,x[20],nr;
cout<<"n=";cin>>n;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
for(i=1;i<=n;i++)
{cout<<"v["<<i<<"]=";cin>>v[i];}
for(i=1;i<=n;i++)
if(v[i]>=a
&&
v[i]<=b)
m=m+1;
else
{x[j]=v[i];
j=j+1;}
cout<<"elementele cuprinse intre "<<a<<" si "<<b<<" sunt in numar de "<<m;}
7)
#include<fstream.h>
void
{int
cout<<"n=";cin>>n;
fstream
while(f>>v[i])

main()
n,v[20],i,c=0;
f("bac.txt",ios::in);

{if(v[i]%n==0)
{cout<<v[i]<<"
c=1;}
if(c==0)
cout<<"nu exista";}

";

8)
#include<iostream.h>
void

main

()

{int
for(i=1;i<=3;i++)
{cout<<"v["<<i<<"]=";cin>>v[i];}
for(i=1;i<=2;i++)
{for(j=2;j<=3;j++)
if(v[i]>v[j])
{aux=v[i];
v[i]=v[j];
v[j]=aux;}}
if((float)(v[2]/v[1])==(float)(v[3]/v[2]))
cout<<"progresie
else
cout<<"nu este progresie geometrica";}

v[10],i,j,aux;

geometrica";

9)
#include<fstream.h>
void
{int
fstream
cin>>n;
if(n>=10
while(n!=0)
{n=n/10;
f<<n;
}}

main()
i,n;
f("NR.TXT",ios::out);
&&

n<=9999999)

10)
#include<iostream.h>
void
{int
cout<<"n=";cin>>n;
cout<<"m=";cin>>m;
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
if(i<j)
a[i][j]=i;
else
a[i][j]=j;}
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
cout<<a[i][j]<<"
cout<<endl;}}

main

()
n,m,i,j,a[20][20];

";

11)
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void
{int
char
cin.get(v,250);
puts(v);
for(i=0;i<strlen(v);i++)
if(v[i]==c1)
v[i]=c2;
else
if(v[i]==c2)
v[i]=c1;
puts(v);}

main()
i;
c1='a',c2='o',v[250];

12)
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void
{int
char
cin.get(v,20);
for(i=0;i<strlen(v);i++)
{for(j=0;j<strlen(a);j++)
if(v[i]==a[j])
v[i]=v[i]-32;}
puts(v);
}

main()
i,j;
v[20],a[5]="aeiou";

13)
#include<iostream.h>
float
i
int
count
{float
for(i=1;i<=b;i++)
s=s+a[i];
m=s/b;
cout<<s;

,n

,nr=0
(float

,v[100],
a[100],float

s=0,m=0;
b)
x=0;

cout<<m;
for(i=1;i<=b;i++)
if(m<=a[i])
x=x+1;
return
void
{cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{cout<<i<<":";cin>>v[i];}
cout<<count(v,n);
}

x;}
main()

14)
#include<iostream.h>
int
int
interval(int
{int
a=x[1];
b=x[u];
if(a<b)
for(i=1;i<=n;i++)
{if(x[i]>=a
m=m+1;}
else
for(i=1;i<=n;i++)
{if(x[i]>=b
m=m+1;}
return
void
{
cin>>n;
for(int
{cout<<"v["<<i<<"]=";cin>>v[i];}
cout<<interval(v,n);
}

x[100],int

v[100],n;
u)
a,b,i,m=0;

&&

x[i]<=b)

&&

x[i]<=a)
m;}
main()

i=1;i<=n;i++)

15)
#include<iostream.h>
void
{int
cout<<"n=";cin>>n;
cout<<"k=";cin>>k;

main()
n,j,k,i,v[20],aux;

for(i=1;i<=n;i++)
{cout<<"v["<<i<<"]=";cin>>v[i];}
for(i=1;i<k-1;i++)
for(j=i+1;j<k;j++)
if(v[i]>v[j])
{aux=v[i];
v[i]=v[j];
v[j]=aux;}
for(i=k+1;i<n;i++)
for(j=i+1;j<=n;j++)
if(v[i]<v[j])
{aux=v[i];
v[i]=v[j];
v[j]=aux;}
for(i=1;i<=n;i++)
cout<<v[i]<<" ";}

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