Exercitii rezolvate

A. Fie declarările: int a[20]; float b[30];

1. Precizați care dintre elementele din lista de mai jos sunt corecte din punct de vedere sintactic:

a. cin>>a[22];

b. cin>>b;

c. b[6]=20;

d. cout<<a[2] % b[2];

e. a[5]+1=0;

f. cout<>a[i];

m=a[1];

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

if (a[i]% 2 !=0)

if (m>=a[i]) m=a[i]; cout<<m;

daca ar fi citite, în ordine, valorile: 8,1,7,10,3,12,1,2,6 ?

Soluție: Secvența determină valoarea minimă dintre elementele impare ale vectorului. Prin urmare, valoarea afișată va fi 1

3. Ce va afișa secvența:

s = 0;

for(i = 0; i < 4; i++)

s+=a[i][n-i-1];

cout<<s;

dacă matricea a ar avea conținutul de mai jos

2 3 4 1

3 5 4 2

4 5 3 2

3 5 4 3

Soluție: Secvența determină suma elementelor aflate pe diagonala secundară a matricei. Valoarea afișată va fi: 13

C. Scrieți programe C++ pentru rezolvarea următoarelor probleme !

1. Se citește un număr natural n de cel mult 9 cifre. Formați și afișați cel mai mare numar posibil din cifrele sale. Exemplu: n=3972032. Ar trebui afișat: 9733220

Soluție:


 * 1) include

using namespace std;

//functia ordonare sorteaza, folosind metoda bulelor, un sir x, dat ca parametru

void ordonare(int x[10], int n) {

int pozitie, i, inv, aux;

do {

inv=0;

for(i=0;i>n; i=0;

//formam, pas cu pas, sirul cifrelor numarului dat

while(n)

cifre[i]=n%10; i++; n/=10; }

//sortam descrescator sirul cifrelor

ordonare(cifre, i);

for(j=0;j>n; for(i=0;i>a[i]; for(i=1;i<=n;i++) { aux=a[0]; for(j=1;j<n;j++) a[j-1]=a[j]; a[n-1]=aux; for(j=0;j<n;j++) cout<<a[j]<<’ ’; cout<<’\n’; } return 0; }
 * 1) include

3. Se citeşte de la tastatură un număr natural n (n≤1000000000) şi apoi n cifre separate prin spaţii. Se cere să se afişeze pe ecran cele n cifre citite, în ordine crescătoare, separate prin câte un spaţiu.

Exemplu: pentru n=19 şi cifrele 3 3 0 9 2 1 2 1 3 7 1 5 2 7 1 0 3 2 3 se va afişa pe ecran 0 0 1 1 1 1 2 2 2 2 3 3 3 3 3 5 7 7 9.

Soluție: using namespace std; int main { int i,j,n,c,frecv[10]; //initializam vectorul f, folosit pentru a determina frecventa cu care apar cifrele for(i=0;i<10;i++) frecv[i]=0; cin>>n; for(i=0;i>c; frecv[c]++;} for(i=0;i<10;i++) { if(frecv[i]) for(j=1;j<=frecv[i];j++) cout<<i; } return 0; }
 * 1) include

4. Se citesc de la tastatură două numere naturale nenule n şi m (2≤m≤100, 2≤n≤100), iar apoi se construieşte în memorie şi se 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 astfel: fiecare linie a matricei pe o linie separata a ecranului, elementele fiecărei linii vor fi separate prin câte un spaţiu. Exemplu: pentru n=4 şi m=5 se va afişa matricea de mai jos. 1 1 1 1 1 1 2 2 2 2 1 2 3 3 3 1 2 3 4 4

Soluție: using namespace std; int main { int i,j,m,n,mat[100][100]; cin>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) mat[i][j]=i<j?i:j; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) cout<<mat[i][j]<<' '; cout<<'\n'; } return 0; }
 * 1) include

5. Se consideră tabloul bidimensional cu n linii şi n coloane ce conţine numere naturale cu cel mult patru cifre fiecare. Scrieţi programul C/C++ care citeşte de la tastatură numărul natural n (2≤n≤23) şi cele n*n elemente ale tabloului şi apoi afişează pe ecran elementele primului pătrat concentric, separate prin câte un spaţiu. Pătratul este parcurs în sensul acelor de ceasornic începând din colţul său stânga-sus, ca în exemplu. Primul pătrat concentric este format din prima şi ultima linie, prima şi ultima coloană a tabloului. Exemplu: pentru n=5 şi tabloul alăturat,

1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 se va afişa:

1 2 3 4 5 1 6 2 7 6 5 4 3 7 2 6

Soluție: using namespace std; int main { int i,j,m,n,mat[100][100]; cin>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) cin>>mat[i][j]; for(i=1;i<=n;i++) cout<=1;i--) cout<1;i--) cout<<mat[i][1]<<' '; return 0; }
 * 1) include