Evaluare utilizator: / 0
Cel mai slabCel mai bun 

PROBLEME REZOLVATE BACALAUREAT INFORMATICA C++

-)Scrieti programul C sau C++ care construiete în memorie o matrice p cu n linii si n coloane formata numai din valori 1 si 2 astfel încât elementele de pe diagonala secundara si cea principala sa fie egale cu 1, iar restul elementelor din matrice sa fie egale cu 2

#include<iostream.h>
int n,i,j,a[23][23];
void matrice(int x)
{
for(i=1;i<=x;i++)
for(j=1;j<=x;j++)
if(i==j || i==x-j+1)
{
a[i][j]=1;
}
else
{
a[i][j]=2;
}
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}

void main()
{
cout<<"dati n: ";cin>>n;
matrice(n);
afis();
}

-)Realizati urmatoarele cerinte utilizând limbajul C/C++:
a) Scrieti definitia completa a unui subprogram sub cu doi parametri care:
· primeste prin intermediul parametrilor a si b doua numere naturale formate fiecare din cel mult 8 cifre;
· elimina cifra unitatilor numarului continut de parametrul a, mutând-o la sfârsitul numarului continut de parametrul b;
· returneaza prin intermediul parametrilor a si b noile numere obtinute.
De exemplu, pentru valorile 1234 si 56 ale parametrilor a si b, în urma executarii subprogramului sub valorile returnate prin intermediul parametrilor vor fi 123 si 564.
b) Scrieti programul care citeste de la tastatura un numar natural n cu cel mult 8 cifre si care verifica daca numarul n este un palindrom, folosind apeluri ale subprogramului sub. Programul va afisa pe ecran mesajul DA daca numarul este palindrom, altfel va afisa mesajul NU. (Un numar natural n este palindrom daca este egal cu numarul obtinut prin scrierea cifrelor numarului n în ordine inversa.)
De exemplu, daca n=12321 atunci se va afisa pe ecran mesajul DA, iar daca n=124321 atunci se va afisa pe ecran mesajul N

#include<iostream.h>
long n;
void sub(long &x,long &y)
{
y=y*10+x%10;;
x=x/10;
}
void main()
{
cin>>n;
long a=n;
long b=0;
while(a!=0)
{
sub(a,b);
}
if(n==b)
cout<<"DA";
else
cout<<"NU";
}

-)Scrieti programul C sau C++ care citeste de la tastatura un sir de cel mult 30 de litere ale alfabetului englez si creeaza fisierul text BAC.TXT ce contine sirul de caractere dat si toate prefixele acestuia de lungime cel putin 1, fiecare pe câte o linie, în ordinea descrescatoare a lungimii prefixelor. De exemplu, daca se citeste sirul: proba, atunci BAC.TXT va contine:
proba
prob
pro
pr
p

#include<fstream.h>
#include<string.h>
ofstream g("bac.txt");
char c[30];
void main()
{
int t,k,i,j;
cin>>c;
t=strlen(c);
k=t;
for(i=0;i<t;i++)
{
for(j=0;j<k;j++)
{
g<<c[j];

}
g<<endl;
k--;
}
}

-) Scrieti programul C sau C++ care construieste în memorie o matrice patratica cu n linii si n coloane formata numai din valori 0,1 si 2 astfel încât elementele de pe diagonala secundara si cea principala sa fie egale cu 0, elementele situate între diagonalele matricei, în partea superioari inferioara acesteia, sa fie egale cu 1, iar restul elementelor din matrice sa fie egale cu 2. Valoarea lui n (numar natural, 2<n<23) se citeste de la tastatura, iar matricea se va afisa pe ecran, câte o linie a matricei pe câte o linie a ecranului, cu spatii între elementele fiecarei linii (ca în exemplu).
De exemplu, pentru n=5 se construieste în memorie si se afiseaza matricea:
0 1 1 1 0
2 0 1 0 2
2 2 0 2 2
2 0 1 0 2
0 1 1 1 0

#include<iostream.h>
int a[24][24],i,j,n;
void matrice(int x)
{
for(i=1;i<=x;i++)
for(j=1;j<=x;j++)

if(i>j && x-i+1>j)
a[i][j]=2;
else
if(i>j && x-i+1<j)
a[i][j]=1;

else
if(i<j && x-i+1>j)
a[i][j]=1;
else
if(i<j && x-i+1<j)
a[i][j]=2;
else
if(i==j || i==x-j+i)
a[i][j]=0;
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void main()
{
cout<<"dati n: ";cin>>n;
matrice(n);
afis();
}

-)Realizati urmatoarele cerinte utilizând limbajul C/C++:
a) Scrieti definitia completa a unei functii nr cu doi parametri, functie care:
· primeste prin intermediul parametrilor a si b doua numere reale pozitive;
· returneaza numarul de numere întregi cuprinse între valorile parametrilor a si b, inclusiv.
De exemplu, pentru valorile 10.5 si 7 ale parametrilor a si b, functia va returna valoarea 4 deoarece între valorile 7 si 10.5 sunt 4 numere întregi: 7, 8, 9 si 10.
b) Scrieti programul în care se citesc de la tastatura numerele naturale nenule a si k (a apartine[1000,9999], 4 mai mic egal k mai mic egal 9) si în care se determincâte numere naturale de câte k cifre se divid cu a, folosind apeluri ale subprogramului nr. Programul va afisa pe ecran numarul de numere determinat.
De exemplu, daca a=2007 si k=4, atunci numarul afisat este 4, deoarece sunt 4 numere de 4 cifre care se divid cu 2007 (2007, 4014, 6021, 8028).
Observatii: Conceptia prelucrarilor de la a) si b) trebuie sa aiba în vedere criteriul de eficienta privind timpul de executare; daca se rezolva corect cerinta b) fara a se utiliza apeluri ale functiei definite la a), se va acorda un punctaj partial.

#include<iostream.h>
#include<math.h>
int max(float x,float y)
{
if(x>=y)
return x;
else return y;
}
int min(float x,float y)
{
if(x<y) return x;
else return y;
}
int nr(float a,float b)
{
int i;
int ok=0;
a=a*10;
b=b*10;
for(i=(int)min(a,b);i<=(int)max(a,b);i++)

if(i%10==0)
ok++;

return ok;
}


void main()
{

int a,k;
float m,n;
cout<<"dati a: ";cin>>a;
cout<<"dati k: ";cin>>k;
m=pow(10,k-1)/a;
n=(pow(10,k)-1)/a;
cout<<nr(m,n);
}

-)Scrieti programul C sau C++ care citeste de la tastatura un sir de cel mult 30 de litere ale alfabetului englez si creeaza fisierul text BAC.TXT ce contine sirul de caractere dat si toate sufixele acestuia de lungime cel putin 1, fiecare pe câte o linie, în ordinea crescatoare a lungimii sufixelor, aliniate la stânga. De exemplu, daca se citeste sirul teste, atunci BAC.TXT va contine:
e
te
ste
este
teste

#include<fstream.h>
#include<string.h>
ofstream g("bac.txt");
char c[30],t,k,i,j;
void main()
{
cin>>c;
t=strlen(c);
k=t;
for(i=0;i<t;i++)
{
for(j=k-1;j<t;j++)
{
g<<c[j];
}
g<<endl;
k--;
}
}

3.III.1.Scrieti programul C/C++ care construieste în memorie o matrice patratica cu n linii si n coloane formata numai din valori 1 si 2 astfel încât elementele de pe diagonala secundara si cea principala sa
fie egale cu 1, elementele situate între diagonalele matricei, în partea superioara si inferioara acesteia, sa fie egale cu 1, iar restul elementelor din matrice sa fie egale cu 2. Valoarea lui n (numar natural, 2<n<23) se citeste de la tastatura, iar matricea se va afisa pe ecran, câte o linie a matricei pe câte o linie a ecranului, cu spatii între elementele fiecarei linii (ca în exemplu).
De exemplu, pentru n=5 se construieste în memorie si se afiseaza matricea:

1 1 1 1 1
2 1 1 1 2
2 2 1 2 2
2 1 1 1 2
1 1 1 1 1

#include<iostream.h>
int a[24][24],i,j,n;
void matrice(int n)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i>j && n-i+1>j)
a[i][j]=2;
else
if(i<j && n-i+1<j)
a[i][j]=2;
else
a[i][j]=1;
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void main()
{
cout<<"dati n: ";cin>>n;
matrice(n);
afis();
}

3.III.3.Scrieţi programul C sau C++ care citeşte din fişierul BAC.TXT un şir s de cel mult un milion de numere naturale, fiecare num r având cel mult patru cifre, i care determin în mod eficient din punctul de vedere al timpului de executare i al spa iului de memorie folosit, num rul de componente ale irului ob inut prin eliminarea din cele dou extremit i ale lui s a unui num r minim de componente, astfel încât şirul rezultat să înceapă şi să se termine cu câte un număr par. Fişierul BAC.TXT cortine cel puţin un num r par iar numerele din fi ier sunt separate printr-un singur spa iu. Programul va afi a pe ecran num rul de componente ale irului ob inut.
De exemplu, dac fi ierul BAC.TXT con ine numerele:
1 245 22 67 34 29 345 8 354 11 7 34 12 45 39 41 26 67 89 1011
se va afişa pe ecran numărul: 15, deoarece sunt eliminate numerele subliniate iar şirul rezultat este format din 15 numere.

#include<fstream.h>
ifstream f("bac.txt");
void citire()
{
int pi=0,pf=0,i=0,x,ok=1;
while(!f.eof() && ok==1)
{
f>>x;
i++;
if(x%2==0)
{
ok=0;
pi=i;
}
}
while(!f.eof())
{
f>>x;
i++;
if(x%2==0)
pf=i;
}
cout<<pf<<" "<<pi;
}
void main()
{
citire();
}

VARIANTA 4
4.III.1Scrieţi programul C sau C++ care citeşte de la tastatura un număr natural impar n (2<n<23) şi construieşte în memorie o matrice pătratică cu n linii şi n coloane formată numai din valori 1, 2 şi 3 astfel încât elementele din matrice pe coloana mediană (situată în mijlocul matricei) şi linia mediană s fie egale cu 1, elementul situat la intersec ia liniei i coloanei mediane s fie egal cu 2, iar restul elementelor din matrice s fie egale cu 3. Matricea se va afi a pe ecran, câte o linie a matricei pe câte o linie a ecranului, cu spa ii între elementele fiec rei linii (ca în exemplu).
De exemplu, pentru n=5 se construieşte în memorie şi se afişează matricea:

3 3 1 3 3
3 3 1 3 3
1 1 2 1 1
3 3 1 3 3
3 3 1 3 3

#include<iostream.h>
int a[23][23],i,j,n;
void matrice(int n)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==(n+1)/2)
a[i][j]=1;
else
if(j==(n+1)/2)
a[i][j]=1;
else
a[i][j]=3;
a[(n+1)/2][(n+1)/2]=2;
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void main()
{
cout<<"dati n: ";cin>>n;
matrice(n);
afis();
}

VARIANTA 5
5.III.1.Scrieţi programul C sau C++ care citeşte de la tastatura un număr natural n (2<n<30) şi construieşte în memorie o matrice patratica cu n linii si n coloane format numai din valori ce apartin multimii {1,2,3,...,n} astfel încât elementele din matrice situate pe diagonala secundara sa fie egale cu n, elementele situate pe celelalte două "semidiagonale" paralele cu diagonala secundara şi alăturate diagonalei secundare să fie egale cu n-1, elementele situate pe următoarele două "semidiagonale" paralele cu diagonala secundar , de o parte si de alta a acesteia, sa fie egale cu n-2 etc. Matricea se va afisa pe ecran, câte o linie a matricei pe câte o linie a ecranului, cu spatii între elementele fiecarei linii

#include<iostream.h>
int a[30][30],i,j,n;
void matrice(int x)
{
int k=1,l=1;
int y=x;
for(int m=1;m<=x;m++)
{
for(i=1;i<=x;i++)
{
for(j=1;j<=x;j++)
{
a[x-j+k][j]=y;
a[x-j+l][j]=y;
}
}
k++;
l--;
y--;
}
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void main()
{
cout<<"dati n: ";cin>>n;
matrice(n);
afis();
}

5.III.2.Se defineste subprogramul sub cu doi parametri, subprogram care primeste prin intermediul parametrului n un numar natural de cel mult opt cifre si prin intermediul parametrului k o cifra . Subprogramul determină eliminarea primei apariţii a cifrei k în numărul n şi returnează numărul obţinut prin intermediul parametrului n. De exemplu, pentru valorile n=152422 şi k=2 ale parametrilor, în urma apelului subprogramului sub, parametrul n va returna valoarea 15422. Daca cifra k nu apare în scrierea numarului n, atunci valoarea lui n nu se modifica .
a) Scrieti defini ia completa a subprogramului sub.
b)Scrieţi în limbajul C sau C++ programul în care se citesc de la tastatura două numere naturale nenule a şi b cu cel mult opt cifre. Programul va determina şi va afişa pe ecran numărul de cifre distincte ce intra atât în scrierea lui a cât si în scrierea lui b, fara a accesa cifrele numerelor a si i b, folosind apeluri ale subprogramului sub.
De exemplu, pentru valorile a=1237248 şi b=1245823 programul va determina afişarea pe ecran a valorii 5 deoarece sunt cinci cifre distincte (1,2,3,4 si 8) ce apar atât în scrierea lui a cât si în scrierea lui b

#include<iostream.h>
#include<math.h>
int sub(long n,int k)
{   
n=n*10;
long n2=n;
int h=0;
int l=log10(n)+1;
int x=l;
while(x>0 && h==0)
{
long ok2=pow(10,x);
long ok=n/ok2;
long ok1=ok%10;
if(ok1 == k)
{           
long y;
y=n%ok2;
n=n/10;
n=n-n%ok2;
n=n+y;
h++;
}
x--;
}
if(n2!=n)
return n/10;
else
return 0;
}
void main()
{
int i=0,j=0,nr=0;
long a,b,v[10];
cout<<"dati a: ";cin>>a;
cout<<"dati b: ";cin>>b;
while(b>0)
{
i++;
v[i]=b%10;

b=b/10;
}
int k;
int nr2=i;
for(j=1;j<i;j++)
for(k=j+1;k<=i;k++)
if(v[k]==v[j])
{
v[k]=0;
nr2--;
}
for(j=1;j<i;j++)
for(k=j+1;k<=i;k++)
if(v[k]>v[j])
{
int aux=v[k];
v[k]=v[j];
v[j]=aux;
}
for(j=1;j<=nr2;j++)
if(sub(a,v[j]))
nr++;
cout<<nr;   
}

5.III.3.Scrieţi programul C sau C++ care citeşte de la tastatura un şir s de cel mult 30 de litere şi o litera c; programul determin dublarea fiecarei aparitii a literei c în s si scrie noul sir obtinut în fisierul text BAC.TXT.De exemplu, daca se citeste sirul: alfabetar si caracterul a atunci fisierul BAC.TXT va contine sirul: aalfaabetaar.

#include<fstream.h>
#include<string.h>
ofstream g("bac.txt");
char a[30],b[60],c;
int i,l,j,k,n;
void citire()
{
cin>>a;
}
void fct2()
{
for(i=0;i<strlen(a);i++)
b[i]=a[i];
int o=0;
k=strlen(a);
for(i=0;i<strlen(a);i++)
{
if(a[i]==c)
{
k++;
o++;
for(j=i;j<k;j++)
b[j+o]=a[j];
b[j]=a[i];
}
}
}
void main()
{
citire();
cout<<"dati c: ";cin>>c;
fct2();
for(i=0;i<k;i++)
g<<b[i];
}

PROBLEME REZOLVATE BACALAUREAT INFORMATICA C++ NEINTENSIV 2008

Varianta 001

II.5.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

#include<iostream.h>
void main()
{
unsigned int
n,m,i,j,A[11][11];
do
{cout<<"n=";cin>>n;
}
while(n<2 || n>10);
do
{cout << "m="; cin>> m;
}
while ( m<2 || m>10);
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;
}
}

III.3.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

# include<fstream.h>
#include<string.h>
void main()
{
int a ;
unsigned n,este=0;
fstream f("bac.txt",ios::in);
do
{ cout<<"n=";cin>>n;
}
while (n==0 || n>999);
while(f>>a)
{
if(a%n==0)
{cout<<a<<" ";
este=1;
}
}
if(este==0)
cout<<"nu";
f.close();
}

III.4.Subprogramul sub, cu trei parametri, primeşte prin intermediul parametrului:– v un tablou unidimensional cu cel mult 100 de componente ce memorează numere întregi cu cel mult 4 cifre;– n un număr natural nenul mai mic sau egal cu 100 ce reprezintă numărul efectiv de componente ale tabloului primit prin intermediul parametrului v;– a un număr întreg cu cel mult 4 cifre.Subprogramul sub returnează numărul componentelor tabloului primit prin intermediul parametrului v ale căror valori sunt egale cu valoarea parametrului a.

Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=21 ale parametrilor, în urma apelului, subprogramului sub va returna valoarea 2.

a) Scrieţi definiţia completă a subprogramului sub.b) Scrieţi un program C/C++ care să citească de la tastatură un număr natural nenul n (n≤100) şi n numere întregi, fiecare având cel mult 4 cifre, şi care, folosind apeluri utile ale subprogramului sub, să afişeze pe ecran mesajul DA dacă oricare două dintre cele n numere citite sunt distincte două câte două, sau mesajul NU în caz contrar.

Exemplu: pentru n=6 şi cele n numere citite de la tastatură: 47 183 69 8 134 -56 se va afişa pe ecran mesajul DA

#include <iostream.h>
#include <conio.h>
sub(int v[100],int n, int a)
{
int i, nr=0 ;
for(i=0;i<n;i++)
if(v[i]==a) nr++ ;
return nr;
}
void main()
{
int i,n,v[100],t[100],j,este=1;
do
{
cout<<"n= "; cin>>n ;
}while(n==0 || n>100);
for(i=0;i<n;i++)
do
{
cout <<"v["<<i<<"]=";
cin>>v[i] ;
}while(v[i]<-9999 || v[i]>9999);
for(i=0;i<n && este==1;i++)
if(sub(v,n,v[i])>1) este=0;
if(este) cout<<"distincte";
else cout <<"NU";
}

Varianta 002

II.5.Scrieţi un program C/C++ care citeşte de la tastatură un cuvânt format din cel mult 20 de caractere, doar litere ale alfabetului englez. Programul determină transformarea cuvântului citit prin înlocuirea fiecărei litere mici 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.

Exemplu: pentru cuvântul: bACAlaUrEaT se va afişa pe ecran: BACALAUREAT

#include <string.h>
#include <iostream.h>
#include <ctype.h>
void main()
{
char cuvant[20];
unsigned int i,l;
cout<<"cuvantul:"; cin>>cuvant;
l=strlen(cuv);
for(i=0;i<l;i++)
if(cuvant[i]>=97 && cuvant[i]<=122)
cuvant[i]=toupper(cuvant[i]);
cout<<cuvant;
}

III.3.Fişierul text NR.TXT conţine pe o singură linie, separate prin câte un singur spaţiu, cel mult 100 de numere întregi, fiecare număr având cel mult 4 cifre. Scrieţi un program C/C++ care citeşte numerele din fişierul NR.TXT şi afişează pe ecran, separate prin câte un spaţiu, în ordine crescătoare, toate numerele naturale nenule din fişier. Dacă nu există astfel de numere se va afişa pe ecran mesajul NU EXISTA.

Exemplu: dacă fişierul NR.TXT conţine numerele: -3 -10 0 7 -5 7 51 -800 6 798, atunci pe ecran se va afişa: 6 7 7 51 798

#include<fstream.h>
void main()
{ int k=0,a[100],x,i,aux,inv;
fstream f("nr.txt",ios::in);
while (f>>x)
{
if (x>0)
{ a[k]=x;
k++;
}
}
f.close();
if (k==0)
cout<<"NU EXISTA";
else
{ do
{ inv=0;
for(i=0;i<k-1;i++)
if (a[i]>a[i+1])
{ aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
inv=1;
}
}
while (inv);
for(i=0;i<k;i++)
cout<<a[i]<<" ";
}
}

III.4.Un număr n se numeşte extraprim dacă atât el, cât şi orice număr obţinut prin permutarea cifrelor lui n, sunt numere prime. De exemplu, numărul 113 este un număr extraprim deoarece 113, 311, 131 sunt numere prime.

a) Scrieţi definiţia completă a unui subprogram f, cu un parametru, subprogram care:- primeşte prin intermediul parametrului a un număr natural cu cel mult 2 cifre (a>1)- returnează suma exponenţilor divizorilor primi din descompunerea în factori primi a valorii parametrului a.Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*32*5 şi 1+2+1=4.

b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n, 2≤n≤99, şi care determină şi afişează pe ecran, folosind apeluri utile ale subprogramului f, mesajul DA dacă n este un număr extraprim, iar altfel afişează mesajul NU.

#include<iostream.h>
unsigned n,v[3],p[3],c,extraprim,aux;
unsigned f(unsigned a)
{ unsigned i,nr,s=0;
i=2;
while (i<=a && a!=0)
{ nr=0;
while (a%i==0 && a!=0)
{ a=a/i;
nr++;
}
if (nr!=0) s+=nr;
else i++;
}
return s;
}
void permut(unsigned i)
{ unsigned j,l,nr;
if (i==c)
{nr=0;
for(l=0;l<c;l++)
nr=nr*10+v[p[l]];
if
(f(nr)>1)extraprim=0;
}
else
{ p[i]=i;
for(j=0;j<=i;j++)
{ aux=p[i];
p[i]=p[j];
p[j]=aux;
permut(i+1);
aux=p[i];
p[i]=p[j];
p[j]=aux;
}
}
}
void main()
{
cout<<"n="; cin>>n;
unsigned m=n;
c=0;
while (m!=0)
{ v[c]=m%10;
m=m/10;
c++;
}
extraprim=1;
permut(0);
if (extraprim) cout<<"DA";
else cout<<"NU";
}

Varianta 003

II.5.Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (2≤n≤24) şi construieşte în memorie o matrice cu n linii şi n coloane ale cărei elemente vor primi valori după cum urmează:- elementele aflate pe diagonala principală a matricei vor primi valoarea 0- elementele de pe prima coloană, cu excepţia celui aflat pe diagonala principală vor primi valoarea n- elementele de pe a doua coloană, cu excepţia celui aflat pe diagonala principală vor primi valoarea n-1...-lementele de pe ultima coloană, cu excepţia celui aflat pe diagonala principală vor primi valoarea 1.Programul va afişa matricea astfel construită pe ecran, câte o linie a matricei pe câte o linie a ecranului, cu câte un spaţiu între elementele fiecărei linii (ca în exemplu).

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

0 3 2 1

4 0 2 1

4 3 0 1

4 3 2 0

#include <iostream.h>
void main()
{
unsigned n,A[24][24],i,j;
do
{
cout<<"n="; cin>>n;
}
while (n<2 || n>24);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
A[j][i]=n-i;
for(i=0;i<n;i++) A[i][i]=0;
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
}

III.3.Fişierului text NR.TXT conţine pe o singură linie, separate prin câte un singur spaţiu, cel mult 100 de numere naturale, fiecare număr având cel mult 4 cifre. Să se scrie un program C/C++ care citeşte toate numerele din fişier şi scrie pe ecran, pe o singură linie, separate prin câte un spaţiu, în ordine crescătoare, toate numerele din fişier care au cel puţin 3 cifre.Dacă fişierul nu conţine astfel de numere se va afişa pe ecran mesajul NU EXISTA.

#include <stdio.h>
void main()
{
int n,a[100],x,i,aux,inv;
FILE *f;
f=fopen("nr.txt","r");
n=0;
while (!feof(f))
{
fscanf(f,"%d",&x);
if (x>=100)
{a[n]=x; n++;
}
}
fclose(f);
if (n==0)
printf("NU EXISTA");
else
{ inv=0;
for(i=0;i<n-1;i++)
if (a[i]>a[i+1])
{ aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
inv=1;
}
}
while (inv);
for(i=0;i<n;i++)
printf("%d ",a[i]);
}

III.4.Subprogramul cif, cu doi parametri, primeşte prin intermediul parametrului a un număr natural cu cel mult 8 cifre şi prin intermediul parametrului b o cifră; subprogramul returnează numărul de apariţii ale cifrei b în scrierea numărului a.Exemplu: pentru a=125854 şi b=5, subprogramul va returna valoarea 2.a) Scrieţi definiţia completă a subprogramului cif. b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n cu cel mult 8 cifre, dintre care cel puţin una impară, şi care determină şi afişează pe ecran, folosind apeluri utile ale subprogramului cif, cel mai mare număr natural care poate fi obţinut utilizând toate cifrele impare ale numărului n.Exemplu: dacă n=2152331 atunci se va afişa pe ecran numărul 53311.

#include <iostream.h>
long n;int i;
int cif(long a, int b)
{
int nr=0;
while (a!=0)
{
if (a%10==b) nr++;
a=a/10;
}
return nr;
}
void main()
{
do
{
cout<<"dati n(cu cel putin o cifra impara)="; cin>>n;
} while (n<0 || n>99999999);
int j,t,numar=0;
for(i=9;i>=1;i=i-2)
{t= cif(n,i);
if (t!=0)
for(j=1;j<=t;j++)
numar=numar*10+i;
}
if(numar==0) cout<<"numarul nu are cifre impare";
else cout<<numar;
}

Varianta 004

004.II.5.Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (2≤n≤24) şi construieşte în memorie o matrice cu n linii şi n coloane ale cărei elemente vor primi valori după cum urmează:- elementele aflate pe diagonala secundară a matricei vor primi valoarea 0- elementele de pe prima linie, cu excepţia celui aflat pe diagonala secundară vor primi valoarea n- elementele de pe a doua linie, cu excepţia celui aflat pe diagonala secundară vor primi valoarea n-1...- elementele de pe ultima linie, cu excepţia celui aflat pe diagonala secundară vor primi valoarea 1.Programul va afişa matricea astfel construită pe ecran, câte o linie a matricei pe câte o linie a ecranului, cu câte un spaţiu între elementele fiecărei linii (ca în exemplu).Exemplu: pentru n=4 se va afişa matricea alăturată.

4 4 4 0

3 3 0 3

2 0 2 2

0 1 1 1

#include<iostream.h>
void main()
{ unsigned a[20][20],n,i,j;
do
{
cout<<"n="; cin>>n;
}
while (n<2||n>24);
for(i=0;i<n;i++) a[i][n-1-i]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if (j!=n-1-i)
a[i][j]=n-i;
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}


Comments (7)
  • Anonim  - Primele n*p patrate perfecte pare
    avatar
    Scrieţi un program Pascal care citeşte de la tastatură două numere naturale n şi p
    (2≤n≤20, 1≤p≤20) şi construieşte în memorie un tablou bidimensional cu n linii şi p
    coloane. Tabloul va fi construit astfel încât, parcurgând tabloul linie cu linie de sus în jos şi
    fiecare linie de la stânga la dreapta, să se obţină şirul primelor n*p pătrate perfecte pare,
    ordonat strict crescător, ca în exemplu. Tabloul astfel construit va fi afişat pe ecran, fiecare
    linie a tabloului pe câte o linie a ecranului, cu câte un spaţiu între elementele fiecărei linii.
    Exemplu: pentru n=2, p=3 programul va afişa tabloul alăturat:
    (10p.)
    0 4 16
    36 64 100
  • lencik
    avatar
    sa presupunem ca am declarat un sir S de maxim 100 de caractere.De creat programul care de la tastiera citeste un text (scris cu litere mici)format din cuvinte separate prin unul sau mai multe spatii .Textul se termina cu caracterul´.´Sa se determine caracterele comune pentru cel mai scurt si cel mai lung cuvint din textul dat (se considera ca toate cuvintele din text au lungime diferita)
  • lencik
    avatar
    poate sa ma ajute cineva la info?????va rog

  • madalina
    avatar
    hggh
  • madalina  - mada
    avatar
    CINE MA POATE AJUTA CU PROBLEME LA INFO??
  • Gicu  - Indicii
    avatar
    Avem 2 discuri si o multime de fisiere, trebuie sa cream un algoritm care repartizeaza fisierele pe ambele cd-uri in asa fel incit diferenta dintre spatiile ramase sa fie cit mai mici....daci o idee va rog scriti pe mail..mersi
  • ioana  - anyone? :-ss
    avatar
    Scrieţi un program C/C++ care să citească de la tastatură un număr natural nenul n (n≤100) şi n
    numere întregi, fiecare având cel mult 4 cifre, şi care să afişeze pe ecran mesajul DA dacă oricare
    două dintre cele n numere citite sunt distincte două câte două, sau mesajul NU în caz contrar.
Scrieti comentariu
Your Contact Details:
Gravatar enabled
Comentarii: