probleme rezolvate atestat informatica 2011

Probleme rezolvate c++ atestat informatica 2011

1.Scrieți programul care citește un număr natural nenul n cu cel mult 4 cifre și determină cel mai mic număr prim mai mare decât 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. Fişierul text bac.txt conţine, pe o singură linie, cel mult 1000 de numere naturale nenule cu cel mult 4 cifre fiecare, numerele fiind separate prin câte un spaţiu. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural nenul n (n999) şi numerele din fişierul bac.txt şi care afişează pe ecran, separate prin câte un spaţiu, toate numerele din fişier care sunt divizibile cu n. Dacă fişierul nu conţine niciun astfel de număr, atunci se va afişa pe ecran mesajul NU EXISTA.

Exemplu: dacă fişierul bac.txt conţine numerele: 3 100 40 70 25 5 80 6 3798,

pentru n=10 atunci pe ecran se va afişa: 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. Scrieţi un program C/C++ care citeşte de la tastură un număr natural n cu cel mult 8 cifre (n10) şi care creează fişierul text NR.TXT ce conţine numărul n şi toate prefixele nenule ale acestuia, pe o singură linie, separate prin câte un spaţiu, în ordine descrescătoare a valorii lor.

Exemplu: pentru n=10305 fişierul NR.TXT va conţine numerele:

10305 1030 103 10 1

10. Scrieţi un program C/C++ care citeşte de la tastatură două numere naturale nenule n şi m (2≤m≤10, 2≤n≤10)  şi care construieşte în memorie  şi apoi afişează 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  (1≤i≤n,  1≤j≤m).

Matricea se va afişa pe ecran, câte o linie a matricei pe câte o linie a ecranului, elementele  fiecărei linii fiind separate prin câte un spaţiu.

Exemplu: pentru n=4 şi m=5  se va afişa matricea alăturată.

1 1 1 1 1

1 2 2 2 2

1 2 3 3 3

1 2 3 4 4

11.Scrieţi un program C/C++ care citeşte de la tastatură două caractere c1 şi c2, şi un text având cel mult 250 caractere (spaţii şi litere ale alfabetului englez), pe care îl modifică înlocuind toate apariţiile caracterului memorat în c1 cu cel memorat în c2 şi toate apariţiile caracterului memorat în c2 cu cel memorat în c1. Programul afişează pe linii separate ale ecranului atât textul iniţial cât şi textul obţinut după efectuarea înlocuirilor.

Exemplu: dacă pentru c1 se citeşte a, pentru c2 se citeşte o iar textul citit este:

hocus pocus preparatus

se va afişa :

hocus pocus preparatus

hacus pacus preporotus

12. Să se scrie un program C/C++ care citeşte de la tastatură un cuvânt format din cel mult 20 de caractere, doar litere mici ale alfabetului englez. Programul determină transformarea cuvântului citit prin înlocuirea fiecărei vocale a cuvântului, cu litera mare corespunzătoare, restul literelor nemodificându-se, ca în exemplu. Programul afişează pe ecran cuvântul obţinut, pe o singură linie. Se consideră vocale literele din mulţimea {a,e,i,o,u}.

Exemplu: pentru cuvântul bacalaureat se va afişa pe ecran: bAcAlAUrEAt

13. Scrieţi definiţia completă a subprogramului count care are 2 parametri prin care primeşte un tablou unidimensional cu maximum 100 de numere reale şi numărul de elemente din tablou. Subprogramul returnează numărul de elemente din tabloul unidimensional care sunt mai mari sau cel puţin 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. Scrieţi definiţia completă a subprogramului interval care are 2 parametri prin care primeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000 şi numărul de elemente din tabloul unidimensional. Subprogramul returnează numărul de elemente din tabloul unidimensional care aparţin 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 main()
{int i,n,ok=0;
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;
}

2)

#include<iostream.h>
void main()
{int n,c=1,i,v[20],j=1,n1;
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 “<<n1<<” sunt in ordine crescatoare”;
else
cout<<“cifrele numarului “<<n1<<” nu sunt in ordine crescatoare”;}

3)

#include<iostream.h>
void main ()
{int a,b;
cin>>a;
cin>>b;
while(a!=b)
{if(a>b)
a=a-b;
else
b=b-a;}
cout<<a;}

4)

#include<iostream.h>
void main()
{int v[20],n,i,y[20],j=0;
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]<<” “;}

5)

#include<iostream.h>
void main()
{int v[20],a,n,i,j=0,x[20],nr;
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;
j=j+1;
x[j]=i;}
cout<<“nr “<<a<<” apare in vector de “<<nr<<” ori”;
cout<<endl;  
for(i=1;i<=j;i++)
cout<<“nr “<<a<<” apare pe pozitia “<<x[i]<<endl;}

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 main()
{int n,v[20],i,c=0;
cout<<“n=”;cin>>n;
fstream f(“bac.txt”,ios::in);
while(f>>v[i])

{if(v[i]%n==0)

{cout<<v[i]<<” “;
c=1;}
if(c==0)
cout<<“nu exista”;}

8)

#include<iostream.h>
void main ()
{int v[10],i,j,aux;
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 geometrica”;
else
cout<<“nu este progresie geometrica”;}

9)

#include<fstream.h>
void main()
{int i,n;
fstream f(“NR.TXT”,ios::out);
cin>>n;
if(n>=10 && n<=9999999)
while(n!=0)
{n=n/10;
f<<n;
}}

10)

#include<iostream.h>
void main ()
{int n,m,i,j,a[20][20];
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;}}

11)

#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{int i;
char c1=’a’,c2=’o’,v[250];
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);}

12)

#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{int i,j;
char v[20],a[5]=”aeiou”;
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);
}

13)

#include<iostream.h>
float i ,n ,nr=0 ,v[100], s=0,m=0;
int count (float a[100],float b)
{float x=0;
for(i=1;i<=b;i++)
s=s+a[i];
m=s/b;
cout<<s;
cout<<m;
for(i=1;i<=b;i++)
if(m<=a[i])
x=x+1;
return x;}
void main()
{cout<<“n=”;cin>>n;
for(i=1;i<=n;i++)
{cout<<i<<“:”;cin>>v[i];}
cout<<count(v,n);
}

14)

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

15)

#include<iostream.h>
void main()
{int n,j,k,i,v[20],aux;
cout<<“n=”;cin>>n;
cout<<“k=”;cin>>k;
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]<<” “;} 

numarul de aparitii a unei cifre intr-un numar

Scrieti un program care afiseaza numarul de aparitii a unei cifre x intr-un numar n;de ex daca citim n=2232 si x=2 se afiseaza numarul 3.

#include<iostream.h>
void main()
{
int n,n1,nr,x;
cout<<“n=”;cin>>n;
cout<<“x=”;cin>>x;
nr=0;
n1=n;
do
{
if(n1%10==x) nr++;
n1=n1/10;
}while(n1);
cout<<“cifra “<<x<<” apare de “<<nr<<” ori”;
}

{joscommentenable}