Subiectul 4
Se dă un număr natural nenul care are maxim 9 cifre. Scrieti un program care să afiseze media aritmetică a cifrelor sale.
#include using namespace std; double MAritmeticaCifre(unsigned int x){ int S = 0, k = 0; while(x > 0){ S += (x % 10); x /= 10; k++; } return (double)S/k; } int main() { int n; cout << "n = "; cin >> n; cout << MAritmeticaCifre(n); return 0; }
Subiectul 10
Sa se afiseze toate numerele prime cuprinse in intervalul [a,b], unde a,b sunt numere naturale, a
#include using namespace std; bool verificaPrim(int x){ if(x == 1) return false; for(int i = 2; i * i <= x; ++i) if(x % i == 0) return false; return true; } int main() { int a, b; cout << "a = "; cin >> a; cout << "b = "; cin >> b; if(a > b){ int aux = a; a = b; b = aux; } for(int i = a; i <= b; ++i) if(verificaPrim(i)) cout << i << " "; return 0; }
Subiectul 19
Se citeste un numar natural n diferit de zero. Sa se scrie toate tripletele de numere naturale (a, b, c) pitagoreice (a2+b2=c2) mai mici decat n, nenule.
#include using namespace std; int main() { int n; cout << "n = "; cin >> n; for(int a = 3; a <= n; ++a) for(int b = a+1; b <= n; ++b) for(int c = b+1; c <= n; ++c) if(a*a + b*b == c*c) cout << a <<" " << b << " " << c << endl; return 0; }
Subiectul 20
Se citeste un numar natural n. Sa se verifice daca este palindrom.
#include using namespace std; int oglindit(int x){ int og = 0; while(x > 0){ og = og * 10 + x % 10; x /= 10; } return og; } int main() { int n; cout << "n = "; cin >> n; if(n == oglindit(n)) cout << n << " este palindrom"; else cout << n << " nu este palindrom"; return 0; }
Subiectul 24
Se citeste un numar natural n. Sa se verifice daca este un numar perfect, adica daca este egal cu suma divizorilor sai, afara lui insusi (ex : 6=1+2+3).
#include using namespace std; int sumaDivizori(int n){ int S = 0; for(int i = 1; i <= n/2; ++i) if(n % i == 0) S += i; return S; } int main() { int x; cout << "x = "; cin >> x; if(x == sumaDivizori(x)) cout << x << " este perfect"; else cout << x << " nu este perfect"; return 0; }
Subiectul 5
Se citeste un numar intreg n. Sa se transforme numarul din baza 10 in baza 2 retinand cifrele intr-un vector.
#include #define maxdim 20 using namespace std; void constructieV(int x, int v[], int &k){ k = 0; while(x > 0){ v[k] = x % 2; k++; x /= 2; } } int main() { int n, v[maxdim], k; cout << "n = "; cin >> n; constructieV(n, v, k); for(int i = k-1; i>=0; i--) cout << v[i] << " "; return 0; }
Subiectul 11
Se citesc, pe rand, cifrele unui număr natural (cu cel mult 9 cifre). Sa se reconstituie numarul intr-o variabila de tip long.
#include using namespace std; int main() { int v[13], nr_cifre; long int x = 0; cout << "numar cifre= "; cin >> nr_cifre; for(int i = 0; i < nr_cifre; ++i) cin >> v[i]; int p = 1; for(int i = nr_cifre-1; i>=0; --i){ x = x + v[i] * p; p *= 10; } cout << endl << x; return 0; }
Subiectul 25
Se citesc n numere. Sa se afiseze acele numere a caror suma a cifrelor este egala cu numarul de ordine la citire.
#include using namespace std; int sumaCifrelor(int x){ int S = 0; while(x > 0){ S += x % 10; x /= 10; } return S; } int main() { int v[20], n; cout << "n = "; cin >> n; for(int i = 0; i < n; ++i) cin >> v[i]; for(int i = 0; i < n; ++i) if(sumaCifrelor(v[i]) == i) cout << v[i] << " "; return 0; }
Subiectul 1
Se citesc n (maxim 30) elemente reale, sa se retina elementele o singura data folosind un sir ajutator.
#include using namespace std; void citire(float v[], int n){ for(int i = 0; i < n; ++i) cin >> v[i]; } void afisare(float v[], int n){ for(int i = 0; i < n; ++i) cout << v[i] << " "; } bool cauta(float v[], int n, float x){ for(int i = 0; i < n; ++i) if(v[i] == x) return true; return false; } int main() { float v[30], u[30]; int n; cout << "n = "; cin >> n; citire(v, n); //constructia vectorului u u[0] = v[0]; int k = 1; for(int i = 1; i < n; ++i) if(!cauta(u, k, v[i])){ u[k] = v[i]; k++; } cout << "vectorul continand unicate: "; afisare(u, k); return 0; }
Subiectul 13
Se citesc doua multimi de numere intregi, cu cel mult 20 de elemente, sa se afiseze intersectia lor.
#include using namespace std; void citire(int v[], int n){ for(int i = 0; i < n; ++i) cin >> v[i]; } void afisare(int v[], int n){ for(int i = 0; i < n; ++i) cout << v[i] << " "; } bool cauta(int v[], int n, int x){ for(int i = 0; i < n; ++i) if(v[i] == x) return true; return false; } int main() { int v[20], u[20], w[20]; int n, m; cout << "n = "; cin >> n; citire(v, n); cout << "m = "; cin >> m; citire(u, m); //constructia vectorului w = intersectia int k = 0; for(int i = 0; i < n; ++i) if(cauta(u, m, v[i])){ w[k] = v[i]; k++; } cout << "vectorul intersectie: "; afisare(w, k); return 0; }
Subiectul 6
Se citesc 2 multimi de numere intregi cu cel mult 20 elemente. Să se afiseze reuniunea lor.
#include using namespace std; void citire(int v[], int n){ for(int i = 0; i < n; ++i) cin >> v[i]; } void afisare(int v[], int n){ for(int i = 0; i < n; ++i) cout << v[i] << " "; } bool cauta(int v[], int n, int x){ for(int i = 0; i < n; ++i) if(v[i] == x) return true; return false; } int main() { int v[20], u[20], w[20]; int n, m; cout << "n = "; cin >> n; citire(v, n); cout << "m = "; cin >> m; citire(u, m); //constructia vectorului w = reuniunea for(int i = 0; i < n; ++i) w[i] = v[i]; int k = n; for(int i = 0; i < m; ++i) if(!cauta(w, k, u[i])){ w[k] = u[i]; k++; } cout << "vectorul reuniune: "; afisare(w, k); return 0; }
Subiectul 22
Se citesc doua multimi de numere intregi, cu cel mult 20 de elemente, sa se afiseze produsul cartezian al lor.
#include using namespace std; void citire(int v[], int n){ for(int i = 0; i < n; ++i) cin >> v[i]; } void produsCartezian(int a[], int n, int b[], int m){ for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) cout << "("<
Subiectul 12
Se citeste un sir de n numere reale. Sa se sorteze crescator, afisandu-se sirul initial, sirul sortat si din nou sirul initial.
#include using namespace std; void citire(float v[], float w[], int n){ for(int i = 0; i < n; ++i){ cin >> v[i]; w[i] = v[i]; } } /** interschimbare - parcurg v cu 2 indici, i si j, * j > i, daca nu se respecta ordonarea crescatoare * a elementelor v[i] si v[j] se interschimba * *******/ void bubblesort(float v[], int n){ int aux, sw; do{ sw = 0; for(int i = 0; i < n-1; ++i) if(v[i] > v[i+1]){ aux = v[i]; v[i] = v[i+1]; v[i+1] = aux; sw = 1; } }while(sw == 1); } void interschimbare(float v[], int n){ int aux; for(int i = 0; i < n-1; ++i) for(int j = i+1; j < n; ++j) if(v[i] > v[j]){ aux = v[i]; v[i] = v[j]; v[j] = aux; } } void afisare(float v[], int n){ for(int i = 0; i < n; ++i) cout << v[i] << " "; } int main() { float v[20], w[20], n; cout << "n = "; cin >> n; citire(v, w, n); cout << endl << "Vectorul initial: "; afisare(v, n); bubblesort(v, n); cout << endl << "Vectorul sortat: "; afisare(v, n); cout << endl << "Vectorul initial: "; afisare(w, n); return 0; }
Subiectul 2
Se citeste un sir de numere reale. Sa se inverseze elementele de valoare minima si de valoare maxima, presupunand ca sunt unice.
#include using namespace std; void citire(float v[], int n){ for(int i = 0; i < n; ++i) cin >> v[i]; } void afisare(float v[], int n){ for(int i = 0; i < n; ++i) cout << v[i] << " "; } void pozMinMax(float v[], int n, int &pm, int &pM){ int minim = v[0]; int maxim = v[0]; for(int i = 1; i < n; ++i){ if(v[i] < minim){ minim = v[i]; pm = i; } if(v[i] > maxim){ maxim = v[i]; pM = i; } } } int main() { float v[20]; int n, pm, pM, aux; cout << "n = "; cin >> n; citire(v, n); pozMinMax(v, n, pm, pM); aux = v[pm]; v[pm] = v[pM]; v[pM] = aux; afisare(v, n); return 0; }
Subiectul 17
Se citeste un sir de numere intregi sortate strict crescator si un numar intreg nr. Sa se afle daca numarul citit se afla in sir fara a parcurge tot sirul.
#include using namespace std; void citire(int v[], int n){ for(int i = 0; i < n; ++i) cin >> v[i]; } int binsearch(int v[], int n, int nr){ int st = 0, dr = n-1; while(st <= dr){ int m = (st + dr) / 2; if(nr == v[m]) return m; else if(nr > v[m]) st = m + 1; else dr = m -1; } return -1; } int main() { int v[20], n, nr; cout << "n = "; cin >> n; citire(v, n); cout << "nr cautat = "; cin >> nr; cout << binsearch(v, n, nr); return 0; }
Subiectul 21
Se citeste un vector cu n componente numere naturale. Sa se afiseze cmmdc al celor n numere.
#include using namespace std; void citire(int v[], int n){ for(int i = 0; i < n; ++i) cin >> v[i]; } int cmmdc(int m, int n){ while(m != n) if(m > n) m = m - n; else n = n - m; return n; } int cmmdcV(int v[], int n){ int c = v[0]; for(int i = 1; i < n; ++i) c = cmmdc(c, v[i]); return c; } int main() { int v[20], n; cout << "n = "; cin >> n; citire(v, n); cout << cmmdcV(v, n); return 0; }
Subiectul 8
Sa se citeasca o matrice patratica de n*n numere intregi. Sa se calculeze elementul maxim de pe diagonala principala.
#include using namespace std; void citire(int a[][10], int n){ for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) cin >> a[i][j]; } int maximDP(int a[][10], int n){ int M = a[0][0]; for(int i = 1; i < n; ++i) if(a[i][i] > M) M = a[i][i]; return M; } int main() { int a[10][10], n; cout << "n = "; cin >> n; citire(a, n); cout << maximDP(a, n); return 0; }
Subiectul 15
Sa se citeasca o matrice patratica de n*n numere intregi. Sa se calculeze elementul maxim de pe diagonala secundara.
#include using namespace std; void citire(int a[][10], int n){ for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) cin >> a[i][j]; } int maximDS(int a[][10], int n){ int M = a[0][n-1]; for(int i = 1; i < n; ++i) if(a[i][n-i-1] > M) M = a[i][n-i-1]; return M; } int main() { int a[10][10], n; cout << "n = "; cin >> n; citire(a, n); cout << maximDS(a, n); return 0; }
Subiectul 9
Sa se scrie un program care interschimba intr-o matrice data doua linii date.
#include using namespace std; void citire(int a[][10], int m, int n){ for(int i = 0; i < m; ++i) for(int j = 0; j < n; ++j) cin >> a[i][j]; } void interschimbaLinii(int a[][10], int m, int n){ int k1, k2, aux; cout << "k1 = "; cin >> k1; cout << "k2 = "; cin >> k2; for(int j = 0; j < n; ++j){ aux = a[k1][j]; a[k1][j] = a[k2][j]; a[k2][j] = aux; } } void afisare(int a[][10], int m, int n){ for(int i = 0; i < m; ++i){ for(int j = 0; j < n; ++j) cout << a[i][j] << " "; cout << endl; } } int main() { int a[10][10], m, n; cout << "linii = "; cin >> m; cout << "coloane = "; cin >> n; citire(a, m, n); interschimbaLinii(a, m, n); afisare(a, m, n); return 0; }
Subiectul 7
Sa se scrie un program care interschimba intr-o matrice data doua coloane date.
#include using namespace std; void citire(int a[][10], int m, int n){ for(int i = 0; i < m; ++i) for(int j = 0; j < n; ++j) cin >> a[i][j]; } void interschimbaColoane(int a[][10], int m, int n){ int k1, k2, aux; cout << "k1 = "; cin >> k1; cout << "k2 = "; cin >> k2; for(int i = 0; i < m; ++i){ aux = a[i][k1]; a[i][k1] = a[i][k2]; a[i][k2] = aux; } } void afisare(int a[][10], int m, int n){ for(int i = 0; i < m; ++i){ for(int j = 0; j < n; ++j) cout << a[i][j] << " "; cout << endl; } } int main() { int a[10][10], m, n; cout << "linii = "; cin >> m; cout << "coloane = "; cin >> n; citire(a, m, n); interschimbaColoane(a, m, n); afisare(a, m, n); return 0; }
Subiectul 16
Sa se scrie un program care insereaza intr-o matrice data o linie data cu elemente 0.
#include using namespace std; void citire(int a[][10], int m, int n){ for(int i = 0; i < m; ++i) for(int j = 0; j < n; ++j) cin >> a[i][j]; } void afisare(int a[][10], int m, int n){ for(int i = 0; i < m; ++i){ for(int j = 0; j < n; ++j) cout << a[i][j] << " "; cout << endl; } } void constructie(int a[][10], int m, int n, int b[][10]){ int k; cout << "k = "; cin >> k; for(int i = 0; i < k; ++i) for(int j = 0; j < n; ++j) b[i][j] = a[i][j]; for(int j = 0; j < n; j++) b[k][j] = 0; for(int i = k+1; i <= m; ++i) for(int j = 0; j < n; ++j) b[i][j] = a[i-1][j]; } int main() { int a[10][10], b[10][10], m, n; cout << "linii = "; cin >> m; cout << "coloane = "; cin >> n; citire(a, m , n); afisare(a, m, n); constructie(a, m , n, b); afisare(b, m+1, n); return 0; }
Subiectul 18
Sa se scrie un program care insereaza intr-o matrice data o coloana data cu elemente 0.
#include using namespace std; void citire(int a[][10], int m, int n){ for(int i = 0; i < m; ++i) for(int j = 0; j < n; ++j) cin >> a[i][j]; } void afisare(int a[][10], int m, int n){ for(int i = 0; i < m; ++i){ for(int j = 0; j < n; ++j) cout << a[i][j] << " "; cout << endl; } } void constructie(int a[][10], int m, int n, int b[][10]){ int k; cout << "k = "; cin >> k; for(int i = 0; i < m; ++i) for(int j = 0; j < k; ++j) b[i][j] = a[i][j]; for(int i = 0; i < m; i++) b[i][k] = 0; for(int i = 0; i < m; ++i) for(int j = k+1; j <= n; ++j) b[i][j] = a[i][j-1]; } int main() { int a[10][10], b[10][10], m, n; cout << "linii = "; cin >> m; cout << "coloane = "; cin >> n; citire(a, m , n); afisare(a, m, n); constructie(a, m , n, b); afisare(b, m, n+1); return 0; }
Subiectul 3
Sa se scrie un program care elimina dintr-o matrice data o linie data.
#include using namespace std; void citire(int a[][10], int m, int n){ for(int i = 0; i < m; ++i) for(int j = 0; j < n; ++j) cin >> a[i][j]; } void eliminaLinie(int a[][10], int m, int n){ int k; cout << "k = "; cin >> k; for(int i = k; i < m-1; ++i) for(int j = 0; j < n; ++j) a[i][j] = a[i+1][j]; } void afisare(int a[][10], int m, int n){ for(int i = 0; i < m; ++i){ for(int j = 0; j < n; ++j) cout << a[i][j] << " "; cout << endl; } } int main() { int a[10][10], m, n; cout << "linii = "; cin >> m; cout << "coloane = "; cin >> n; citire(a, m, n); afisare(a, m, n); eliminaLinie(a, m , n); afisare(a, m-1, n); return 0; }
Subiectul 14
Sa se scrie un program care elimina dintr-o matrice data o coloana data.
#include using namespace std; void citire(int a[][10], int m, int n){ for(int i = 0; i < m; ++i) for(int j = 0; j < n; ++j) cin >> a[i][j]; } void eliminaColoana(int a[][10], int m, int n){ int k; cout << "k = "; cin >> k; for(int i = 0; i < m; ++i) for(int j = k; j < n-1; ++j) a[i][j] = a[i][j+1]; } void afisare(int a[][10], int m, int n){ for(int i = 0; i < m; ++i){ for(int j = 0; j < n; ++j) cout << a[i][j] << " "; cout << endl; } } int main() { int a[10][10], m, n; cout << "linii = "; cin >> m; cout << "coloane = "; cin >> n; citire(a, m, n); afisare(a, m, n); eliminaColoana(a, m , n); afisare(a, m, n-1); return 0; }