Documente Academic
Documente Profesional
Documente Cultură
Forma generala a unui program in C++ (Codeblocks) este: #include <iostream> program. Fisierul contine intrare/ iesire using namespace std; clase specifice P.O.O int main() principala { cout <<"Salut" << endl; return 0; //include fisierul iostream(in out stream) in // declaratiile unor functii pt. operatii de //spatiul de nume std grupeaza logic functii si //programul (functia) //inceput program //corpul programului
} //sfarsitul programului Programul de mai sus afisaza Salut pe ecran. In C++ este diferenta intre literele mari si mici. Ex: Void void , MAIN main Tipuri standard de date: 1)Tipul INTREG 100 , -100 2)Tipul REAL ex. 2.1231, -123.32, 102 LIMITE true(1) false(0) [0 , 255] [-32.768 , 32.767] [0 , 65.535] [-2.147.483.648 , 2.147.483.647] [0 , 4.294.967.295] [-2.147.483.648 , 2.147.483.647] [0 , 4.294.967.295] [-9.223.372.036.854.775.808 , 9.223.372.036.854.775.807] [0 , 18.446.744.073.709.551.615] [1.17549e-038 , 3.40282e+038] [2.22507e-308 , 1.79769e+308] [3.3621e-4932 , 1.18973e+4932]
TIP bool char short int unsigned short int int unsigned int long unsigned long long long unsigned long long float double long double
Afisarea momoriei ocupate si a limitelor datelor pentru un tip specificat se face: g << "Dimensiune int: " << sizeof(int) << endl; g << "Limite: " << numeric_limits<int>::min() << ' ' << numeric_limits<int>::max() <<endl;
Tipul char
(int) in fata unui caracter returneza codul ASCII a caracterului Ex: #include <iostream> using namespace std; char a,b,c; int main() { cout<<"dati un caracter " ; cin>>a; cout <<"caracterul citit este: " <<a<<" si are codul ASCII "<<(int)a<<endl; b=82;//82 este codul ASCII a R cout<<b<<" are codul ASCII "<<(int)b<<endl; //afiseaza caracterul cu codul ASCII 82 c=b+1; //variabila c va memora caracterul cu codul ASCII 83 adica S cout<<c<<" are codul ASCII "<<(int)c; //afiseaza caracterul cu codul ASCII 83 return 0; } VOCABULARUL Setul de caractere 1) Litere a,b,..z,A,BZ 2) cifre 0,1,2,9 3) caractere speciale @!#%<,.?/ etc. Identificatori - nume de costante , variabile sau functii - incep cu o litera sau cu _ urmata de litere sau cifre. Ex: a12s, as33, _007, 1a ,nt@ Cuvinte cheie - while,for,if , int cout,cin etc Comentarii // pentru un rand /* pentru mai multe randuri */ Separatori space , (virgila) ; enter Citirea ( cin ) realizeaza citirea variabilelor de la tastatura cin>>a; //citeste variabila a de la tastatura cin>>a>>b>>x; //citeste variabilele a,b si x de la tastatura Afisarea (cout) realizeaza afisarea pe ecran a unui mesaj si/sau a unei variabile 1)cout<<"Salut"; //afiseaza cuvantul salut pe ecran 2)cout<<s; //afiseaza cotinutul variabilei s pe ecran 3)cout<<"suma este: "<<s<<endl; //daca variabila s are valoarea 201 se afiseaza pe ecran suma este: 201 si apoi cursorul trece la rand nou 4)cout<<"suma este: "<<s<<endl << cout<<"produsul este: "<<p; //afiseaza suma este: 201 produsul este: 330 (pe randuri diferite din cauza lui endl) Atribuirea ( = ) x=2; // x primeste valoarea 2 a=a+1; //a creste cu 1 s=s+x; //s creste cu x
p=p*x; //p creste de x ori x=y; // lui x i se atribuie valoarea lui y Probleme 1.Suma a doua numere 2.Aria unui dreptunghi 3.Media aritmetica a 3 numere
Operatori in C++
a)Operatori aritmetici
+ (adunare) a+b - (scadere) a-b * (inmultire) a*b % (modulo restul impartirii 10%3 este 1, 125%10 este 5) / (impartire sau div) 1) / este div - atunci cand ambele numere din operatie sunt intregi
#include <iostream> using namespace std; long b , a, x; int main() { cout << "dati a si b"; cin >> a >> b; x = a / b; cout << "x=" << x << endl; return 0; } Pentru a=101 si b=20 se afiseaza 5
2) / este impartire - atunci cand cel putin unul din numere este real
#include <iostream> using namespace std; float b , a, x; int main() { cout << "dati a si b"; cin >> a >> b; x = a / b; cout << "x=" << x << endl; return 0; } Pentru a=101 si b=20 se afisaza 5.05 Daca avem int a; si float b; sau float a; si int b; rezultatul afisat va fi acelasi. Impartirea a doua numere intregi se face prin conversia catre un numar real cu (float) #include <iostream> using namespace std; int a,b; float x; int main() { cout << "dati a si b"; cin >> a >> b;
x = a / (float)b; cout << "x=" << x << endl; return 0; } Daca a=101 si b=20 se afisaza 5.05 In C++ se pot face atribuiri de genul: 1) int <-float #include <iostream> using namespace std; int a; float x; int main() { cout << "dati a si x"; cin >> a >> x; a=x; cout << "a=" << a << endl; return 0; } Daca a=1000 si x=2.35 se afiseaza 2 (a primeste doar valoarea 2 nu si 0.35) 2) float <- int Daca la programul anterior se face atribuirea x=a; (x=22.22 si a=100) in x se va memora 100 (adica 100.00)
b) Operatori relationali
> (mai mare) < (se subintelege!!!) >= (mai mare si egal) <= (mai mic si egal) == (egal !!!!!!!) != (diferit)
c) Operatori de incrementare/decrementare
++ (incrementare cu 1 adica creste cu 1) --(decrementare cu 1 adica scade cu 1) a++ ( explicatie: a=a+1; a creste cu 1) ++a (a creste cu 1) #include <iostream> using namespace std; int a,b; int main() { cout << "dati a si b"; cin >> a>>b; a++;b--; cout << "a="<<a << endl; cout << "b="<<b << endl; return 0; } Pentru a=100 si b=20 se afisaza a=101 si b=19 ++a este diferit de a++ daca a este implicat intr-o operatie #include <iostream>
using namespace std; int a,b,s; int main() { cout << "dati a si b"; cin >> a>>b; s=b+(++a); //mai intai se face ++a si apoi se face s=b+a cout << "a="<<a << endl; cout << "s="<<s << endl; return 0; } Daca a=100 si b=20 se afiseaza a=101 si s=121 Daca se inlocuieste s=b+(++a); cu s=b+(a++); se afiseaza 120 (se face mai intai s=b+a si apoi se face a++) Ex 1: a=3; b=++a; => b=4 si a=4 ex2: a=3; b=a++; => b=3 si a=4
d) Operatori logici
! not (negat) && and (si) || or (sau) Ex: a<=b && a<c (explicatie: a<=b si a<c) c!=a || c!=b (c diferit de a sau c diferit de b) !a (explicatie: not a) !(a<=b) a>b (atentie !!!!!!!!!!!!!) !(a<b) a>=b (atentie !!!!!!!!!!!!!) !(a!=b) a==b (atentie !!!!!!!!!!!!!)
e) Operatori de atribuire
= se da (ex: a=x; a=3;) *= (p=p*a p*=a) += (s=s+a s+=a) -= (s=s-a s-=a) /= (x=x/10 x/=10) %= (cif=cif%10 cif%=10) &= |= ^=
actioneaza la nivel de bit pe numere (adica pe reprezentarea numarului in baza 2 !!!) << deplasare la stanga >> deplasare la drepta & si | sau ^ sau exclusiv ~ not a b a&b a|b a^b 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 ~1=0 ~0=1 Operatorul deplasare la stanga << a=3; cout<<(a<<2); 3(10)=11(2) => 1100(2) deplasat => 12(10) deci 3(10)= 12(10) Practic a<<x este a*2x a=1; cout<<(a<<3); se afiseaza 8 Operatorul si & a=13; b=7; cout<<a&b; se afisaza 5 13(10)=1101(2) 7(10)= 111(2) & 0101(2) =5(10) Operatorul sau exclusiv ^ a=13; b=7; cout<<a^b; se afisaza 9 13(10)=1101(2) 7(10)= 0111(2) 1010(2) =10(10) Operatorul deplasare la dreapta >> a=17; cout<<(a>>2); 17(10)=10001(2) => 100(2) deplasat => 4(10) deci 17(10)= 4(10) Practic a>>x este a/2x (div) a=13; cout<<(a>>3); se afiseaza 3 Operatorul sau | a=13; b=7; cout<<a|b; se afisaza 15 13(10)=1101(2) 7(10)= 111(2) | 1111(2) =15(10) Operatorul not ~ ~1101=0010
Prioritatea operatorilor 1. ( )[ ] paranteze rotunde, paranteze vectori 2. ! ~ + - ++ -- not logic, not pe biti, +5,-5,a++,a-3. * -> pointeri 4. * / % inmultire, div sau impartire, mod 5. + a+b,a-b 6. >> << deplasare pe biti 7. < > <= >= operatori relationali 8. == != operatori relationali egal, diferit 9. & si operator logic pe biti 10. ^ sau exclusiv operator logic pe biti 11. | sau operator logic pe biti 12. && si operator logic 12. || sau operator logic 13. = += -= /= %= >>= <<= operatori de
atribuire
Instructiunea IF
f. generala (variante a),b),c) ) if(conditie) if(conditie) { operatie1; operatii else 1; operatie2; } else { operatii2 ; } varianta a) varianta b) if(conditie) operatie1; sau if(conditie) { operatii 1; } varianta c)
Explicatii: Varianta a) Daca conditia este adevarata se executa operatie1, iar daca este falsa se executa operatie2. Nu se pot executa ambele operatii ( operatie1 si operatie2 ). La executia if-ului se executa operatie1 sau operatie2, nu se poate sa nu se execute nici una. Varianta b) Daca if-ul sau else-ul au mai multe operatii ( 2,3,..) acestea se grupeaza intre acolade {.} Varianta c) La if-ul simplificat se realizeaza executia operatie1 daca condita este adevarata, si daca conditia este falsa nu se face nimic. Daca if-ul are mai multe operatii ( 2,3,..) acestea se grupeaza intre acolade {.} In C++ 0 este fals si 0 adevarat Tabel pentru conditii logice: 0 false 1 true
a F F A A
b F A F A
a&&b F F F A
a||b F A A A
Pr1. Min a doua numere #include <iostream> using namespace std; int a,b; int main() { cout <<"Dati valori pentru a si b"; cin>>a>>b; if (a<b) cout << "minimul este:"<<a<<endl; else cout << "minimul este:"<<b<<endl; return 0; } Pr2. Max a 3 numere #include <iostream> using namespace std; int a,b,c; int main() { cout << "Dati valori pentru a, b si c" << endl; cin >>a>>b>>c; if(a>=b && a>=c) cout<<"Maximul este a"<<endl; if(b>=a && b>=c) cout<<"Maximul este b"<<endl; if(c>=a && c>=b) cout<<"Maximul este c"<<endl; return 0; } Pr3. Max a 5 numere #include <iostream> #include <iostream> using namespace std; using namespace std; int a,b,c,d,e,maxi; int a, b, c, d, e, maxi; int main() int main() { { cout << "dati 5 cout << "Dati valori pentru a,b,c,d si e" numere"; << endl; cin >> a >> b >> c >> d cin >>a>>b>>c>>d>>e; >> e; if(a>=b && a>=c && a>=d && a>=e) maxi = a; maxi=a; if (maxi < b) maxi = b; if(b>=a && b>=c && b>=d && b>=e) if (maxi < c) maxi = c; maxi=b; if (maxi < d) maxi = d; if(c>=a && c>=b && c>=d && c>=e) if (maxi < e) maxi = e; maxi=c; cout<<"Max if(d>=a && d>=c && d>=b && d>=e) este:"<<maxi; maxi=d; return 0; if(e>=a && e>=c && e>=d && e>=b) } maxi=e; cout<<"maximul este:"<<maxi; return 0;
Pr4. Ec de gr.I #include <iostream> using namespace std; int a,b; float x; int main() { cout << "Dati coeficientii ecuatiei a si b" << endl; cin>>a>>b; if(a!=0){ x=-(float)b/a; cout<<x<<endl; } else if(b==a) cout<<"orice x este solutie"<<endl; else cout<<"nu exista solutii"; return 0; }
Pr5. Ec de gr.II #include <iostream> #include <cmath> using namespace std; int a, b, c, d; float x1, x2; int main() { cout << "Dati valori pentru a, b si c" << endl; cin >> a >> b >> c; if(a!=0){ d=b*b-4*a*c; if(d>=0){ x1=(-b+sqrt(d))/(float)(a*2); x2=(-b-sqrt(d))/(float)(a*2); cout<<"x1="<<x1<<endl<<"x 2="<<x2; } else cout <<"nu exista solutii reale"; } else{ if(b!=0){ x1=-(float)c/b; cout <<x1<<endl; } else{ if (c==b) cout<<"orice x1 e solutie a ecuatiei"; else cout<<"nu exista solutie pt ecuatie"; }} return 0; }
Pr6. Relatia intre 3 numere(<,>,=) #include <iostream> using namespace std; int a,b,c; int main() { cout << "Dati valori pentru a, b" << endl; cin >>a>>b; if(a>b) cout<<"a >b"<<endl;
if(a<b) cout<<"a<b"<<endl; if(a==b) cout<<"a==b"<<endl; return 0; } Pr7. Adunarea a doua durate de timp 9 3 13 30 20 (h1 m1 s1) 42 50 (h2 m2 s2) 13 10 (h m s )
#include <iostream> using namespace std; int h, h1, h2, m, m1, m2, s, s1, s2; int main() { cout << "Dati valori pentru h1,h2,m1 si m2,s1,s2:" << endl; cin >> h1 >> m1 >> s1 >> h2 >> m2 >> s2; s = s1 + s2; m = m1 + m2; h = h1 + h2; if (s >= 60) { s = s - 60; m = m + 1; } if (m >= 60) { m = m - 60; h = h + 1; } cout << h << " " << m << " " << s << endl; return 0; } Pr8. Inversul unui numar short int Pr9. Comparati doua date calendaristice Pr10. Fie a,b,c laturile unui triunghi. Precizati tipul triunghlui: oarecare, isoscel, echilateral, dreprunghic, dreptunghic isoscel. Pr11. Fie 3 numere a,b,c. precizati relatiile dintre ele: a=b=c,abc,a=bc,a=cb,b=ca Tema Inversul unui numar de 3 cifre Min 4 nr
#include <iostream> using namespace std; int i, s, n, p; int main() { cout << "Dati un nr n:"; cin >> n; p = 1; for (i = 1;i <= n;i++) { p *= i; s += p; } cout << "Suma este:" << s; return 0; } 7.Suma numerelor pare dintr-un sir #include <iostream> using namespace std; int i, s, n, x; int main() { cout << "Dati un nr n:"; cin >> n; for (i = 1;i <= n;i++) { cin >> x; if(x%2==0)s += x; } cout << "Suma celor pare este:" << s; return 0; } 9. Pentru un sir de n numere aflati minimul par. //minimul par dintr-un sir de n #include <iostream> using namespace std; int x,mini,n,i; int main() { cout << "Dati un nr n: "; cin>>n; mini=2000000000; for(i=1;i<=n;i++){ cin>>x; if(x%2==0 && x<mini) mini=x; } if(mini==2000000000) cout<<"Nu exista minim"; else cout<<"Minimul par este:"<<mini; return 0; }
#include <iostream> using namespace std; int i, s, n, x; int main() { cout << "Dati un nr n:"; cin >> n; for (i = 1;i <= n;i++) { cin >> x; s += x; } cout << "Suma este:" << s; return 0; } 8.Pentru un sir de n numere aflati minimul. //minimul dintr-un sir de numere #include <iostream> using namespace std; int i, n, x, mini; int main() { cout << "Dati un nr n:"; cin >> n; mini = 32.000; for (i = 1;i <= n;i++) { cin >> x; if (x < mini) mini = x; } cout << "Minimul din sir este:" << mini; return 0; } 9. Pentru un sir de n numere aflati maximul. //Maximul dintr-un sir #include <iostream> using namespace std; int i,n,maxi,x; int main() { cout << "Dati un nr n:"; cin>>n; for(i=1;i<=n;i++){ cin>>x; if(x>maxi) maxi=x; } cout<<"Maximul este:"<<maxi; return 0; }
9. Pentru un sir de n numere aflati cate elemente pozitive, negative si nule sunt.
//cate numere pozitive, negative si nule sunt intrun sir. #include <iostream> using namespace std; int x, i, n, s, kn, kp, ko; int main() { cout << "Dati un nr:"; cin >> n; for (i = 1;i <= n;i++) { cin >> x; if (x > 0) kp = kp + 1; if (x == 0) ko = ko + 1; if (x<0) kn = kn + 1; } cout << "Nr el. pozitive este:" << kp<< endl; cout << "Nr el. negative este:" << kn<< endl; cout << "Nr el. nule este:" << ko; return 0; }
//media aritmetica a nr. pozitive dintr-un sir #include <iostream> using namespace std; int i, n, x, s, k; float ma; int main() { cout << "Dati un nr:"; cin >> n; for (i = 1;i <= n;i++) { cin >> x; if (x > 0) { s += x; k++; } } ma = (float)s / k; cout << "ma=" << ma; return 0; }
Tema S=100+98+96+94+.+12 S=1/(1*1)+ 1/(2*2)+ 1/(3*3)+.. +1/(n*n) S=(1)*(1+2)*(1+2+3)*..*(1+2+3++n) 11.Divizorii unui numar x. 12.Fie doua numere. Afisati numarul ce are cei mai multi divizori. 13.Verificati daca un numar este perfect. 14.Verificati daca un numar este prim. 15. Media aritmetica a numerelor pare 16. Fie doua numere. Afisati numarul ce are cei mai multi divizori. si media aritmetica a numerelor #include <iostream> impare. using namespace std; #include <iostream> int i,n,x,y,k1,k2; using namespace std; int main() int i,n,x,sp,si,kp,ki; { float map,mai; cout<<"Dati un nr x:"; int main() cin>>x; { cout<<"Dati un nr y:"; cout << "Dati un nr n:"; cin>>y; cin>>n; for(i=1; i<=x; i++) for(i=1;i<=n;i++){ if(x%i==0) k1++; cin>>x; for(i=1; i<=y; i++) if(x%2==0){ sp+=x; if(y%i==0) k2++; kp++;} if(k1>k2) cout<<"x are mai multi divizori"; else { si+=x; else if(k1==k2) cout<<"x si y au acelasi nr de ki++;} divizori"; } else cout<<"y are mai multi divizori"; map=(float)sp/kp; return 0; mai=(float)si/ki; } cout<<"Media aritmetica a nr pare este:"<<map<<endl; cout<<"Media aritmetica a nr impare este:"<<mai; return 0;
WHILE
- structura repetitiva cu test initial Forma generala: while(cond) instructiune1; sau while(cond){ instructiuni1; } Execututie: Daca conditia (cond) este adevarata se realizeaza executia repetata. Cand conditia (cond) este falsa se iese din repetare.
DO WHILE
- structura repetitiva cu test final Forma generala: do{ instructiune1; }while(cond); Execututie: Daca conditia (cond) este adevarata se realizeaza executia repetata. Cand conditia (cond) este falsa se iese din repetare. Probleme 1.Descompunerea in factori primi pt. un numar x #include <iostream> using namespace std; int x, d, p; int main() { cout << "Dati un nr x:"; cin >> x; d = 2; while (x != 1) { p = 0; while (x % d == 0) { p++; x = x / d; } if (p > 0) cout << d << " " << p << endl; d++; } return 0; } 3. Cmmdc a doua numere. #include <iostream> 2. Suma a n numere dintr-un sir #include <iostream> using namespace std; int i,n,x,s; int main() { cout << "Dati un nr n:"; cin>>n; i=1; while(i<=n){ cin>>x; s+=x; i++; } cout<<"Suma nr din sir este:"<<s; return 0; }
using namespace std; int x,y; int main() { cout << "Dati doua nr x si y:"; cin>>x>>y; while (x!=y){ if(x>y) x=x-y; else y=y-x; } cout<<"cmmdc a nr x si y este:"<<x; return 0; }
using namespace std; int a,b,p; float cmmmc; int main() { cout << "Dati doua nr a si b:"; cin>>a>>b; p=a*b; while(a!=b){ if(a>b) a=a-b; else b=b-a; } cmmmc=p/a; cout<<"cmmmc="<<cmmmc; return 0; }
cin>>n; ok=0; for(i=1;i<=n;i++){ cin>>x; if(x%2==1) ok=1; } if(ok==1) cout<<"Da"; else cout<<"Nu"; return 0; }
Fisiere
Intr-o problema citirea datelor se poate face de la tastatura sau din fisier. Afisarea rezultatelor se poate face pe ecran sau intr-un fisier. Problema Suma a doua numere. Citirea numerelor se face din fisierul gigel.in si afisarea sumei se face in fisierul gigel.out; #include <iostream> #include<fstream> using namespace std; fstream f("gigel.in",ios::in); -> indicatorul f va indica la fisierul gigel.in fstream g("gigel.out",ios::out); -> indicatorul g va indica la fisierul gigel.out //ifstream f("gigel.in"); //ofstream g("gigel.out"); int a,b,s; int main() { f>>a>>b; s=a+b; g<<"suma este:"<<s; f.close(); g.close(); return 0; } 1.//suma unui sir de numere cu fisiere #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int i,n,x,s; int main() { f>>n; for(i=1;i<=n;i++){ f>>x; s+=x; } g<<"suma este:"<<s; f.close(); g.close(); return 0; } 2.Afisati minimul, maximul si cmmdc dintre minim si maxim #include <iostream> #include<fstream> using namespace std; ifstream f("sir.in"); ofstream g("sir.out"); int mini,maxi,i,n,x; int main() { f>>n; maxi=-32000; mini=32000; for(i=1;i<=n;i++){ f>>x; if(maxi<x) maxi=x; if(mini>x) mini=x; } g<<"Minimul nu este:"<<mini<<endl; g<<"Maximul nu este:"<<maxi<<endl; while(mini!=maxi)
if(mini>maxi) mini=mini-maxi; else maxi=maxi-mini; g<<"cmmdc este:"<<mini; f.close(); g.close(); return 0; 3.Precizati daca un numar este prim. #include <iostream> #include<fstream> #include<cmath> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int x,k,i; int main() { f>>x; for(i=2;i<=sqrt(x);i++) if(x%i==0){ k=1;break;} if(k==0) g<<"Da"; else g<<"Nu"; f.close(); g.close(); return 0; } 5.Suma numerelor prime dintr-un sir de n. #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int n,i,x,j,k,s; int main() { f>>n; s=0; for(i=1;i<=n;i++){ f>>x; k=0; for(j=1;j<=x;j++){ if(x%j==0) k++;} if(k==2) s=s+x; } g<<s; f.close(); g.close(); return 0; } } 4.Afisati numerele prime din intervalul [a.b]. #include <iostream> #include<fstream> using namespace std; fstream f("sir.in", ios::in); fstream g("sir.out", ios::out); int a, b, i, x, j, k; int main() { f >> a >> b; for (i = a;i <= b;i++) { x = i;k = 0; for (j = 1;j <= x;j++) { if (x % j == 0) k++; } if (k == 2) g << x << " "; } f.close(); g.close(); return 0; }
Vectori
Un vector reprezinta un sir de elemente cu un nume comun asezate in ordine. Ex: un vector cu 10 elemente: a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 Declararea vectorui de mai sus in C++ se face astfel: int a[10] . Elementele sale sunt: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] In general nu vom folosi elemetul a[0]. Operatii de baza cu vectori 1) citirea elementelor unui vector a)de la tastatura cout<<"dati n"; cin >> n; for (i = 1;i <= n;i++){ cout<<"dati element"; cin >> a[i]; } b)din fisier f >> n; for (i = 1;i <= n;i++) 2) afisarea elementelor unui vector a)afisarea pe ecran for (i = 1;i <= n;i++) cout<< a[i]<< " "; b)in fisier for (i = 1;i <= n;i++) g<< a[i]<< " "; 3) suma elementelor unui vector s=0; for (i = 1;i <= n;i++) s+=a[i]; cout<< "Suma este: "<<s; 4) minimul dintr-un sir mini=320000; for (i = 1;i <= n;i++) if (min>a[i]) mini=a[i]; cout<< "minimul este: "<<mini; 5) cate elemente pare sunt intr-un sir k=0; for (i = 1;i <= n;i++) if(a[i]%2==0) k++; cout<< "k este: "<<k; 6) inlocuiti elementele pare cu ultima cifra numarului si cele impare cu penultima cifra for (i = 1;i <= n;i++) if(a[i]%2==0) a[i]=a[i]%10; else a[i]=a[i]/10%10 pr1 Suma numerelor dintr-un sir #include <iostream> #include<fstream> using namespace std; fstream f("sir.in", ios::in); fstream g("sir.out", ios::out); int a[1000], n, i, s; int main() { f >> n; for (i = 1;i <= n;i++) f >> a[i];
for (i = 1;i <= n;i++) s+=a[i]; g << "Suma este:" << s; f.close(); g.close(); return 0; } Pr2 Suma numerelor prime dintr-un sir #include <iostream> #include<fstream> #include<cmath> using namespace std; fstream f("sir.in", ios::in); fstream g("sir.out", ios::out); int a[100], n, i, s, x, j, k; int main() { f >> n; for (i = 1;i <= n;i++) f >> a[i]; for (i = 1;i <= n;i++) { x = a[i]; k=0; for (j = 2;j <= sqrt(x);j++) if (x % j == 0) k++; if (k == 0) s += x; } g << "Suma nr prime din sir este:" << s; f.close(); g.close(); return 0; } Pr3 //afisati numerele vecine ce au aceiasi paritate Varianta 1 #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[1000],n,i,x,y; int main() { f>>n; for(i=1;i<=n;i++) f>>a[i]; for(i=1;i<n;i++){ x=a[i]; y=a[i+1]; if((x%2==0&&y%2==0)||(x%2==1&&y%2==1)) g<<a[i]<<" "<<a[i+1]<<endl; } f.close(); g.close(); return 0; } //afisati numerele vecine ce au aceiasi paritate Varianta 2
#include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[1000],n,i,x,y; int main() { f>>n; for(i=1;i<=n;i++) f>>a[i]; for(i=1;i<n;i++){ x=a[i]; y=a[i+1]; if(x%2==y%2)) g<<a[i]<<" "<<a[i+1]<<endl; } f.close(); g.close(); return 0; } Fie doua multimi a si b. Afisati intersectia celor doua multimi. #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[1000],i,n,m,b[1000],j; int main() { f>>n; for(i=1;i<=n;i++) f>>a[i]; f>>m; for(j=1;j<=m;j++) f>>b[j]; for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(a[i]==b[j]) g<<a[i]<<" "; g.close(); return 0; } Fie doua multimi a si b. Afisati reuniunea celor doua multimi. #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[1000],b[1000],n,i,j,m,k; int main() { f>>n; for(i=1;i<=n;i++) f>>a[i]; f>>m; for(j=1;j<=m;j++) f>>b[j]; for(i=1;i<=n;i++) g<<a[i]<<" "; for(j=1;j<=m;j++){ k=0; for(i=1;i<=n;i++) if(b[j]==a[i]) k++; if(k==0) g<<b[j]<<" "; } f.close(); g.close(); return 0; } Fie un sir de n elemente. Afisati sirul ordonat crescator.(Met bulelor) #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[136],i,n,aux,ord; int main() {
Fie un sir de n elemente. Afisati sirul ordonat crescator.(Met selectiei) #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[145],n,i,j,aux; int main() {
f>>n; for(i=1;i<=n;i++) f>>a[i]; for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) if(a[i]>a[j]){ aux=a[i]; a[i]=a[j]; a[j]=aux; } for(i=1;i<=n;i++) g<<a[i]<<" "; g.close(); return 0; } Fie un sir de numere in intervalul[1,1000].Afisati elementele ce apar de cele mai multe ori. (cu frecventa) sir.in 6 838753 sir.out 38 #include <iostream> #include<fstream> using namespace std; fstream f("sir.in", ios::in); fstream g("sir.out", ios::out); int fr[1001], x, i, n, maxi,j; int main() { f >> n; maxi = 0; for (i = 1;i <= n;i++) { f >> x; fr[x]++; } for (j = 1;j <= 1000;j++) if (maxi < fr[j]) maxi = fr[j]; for (j= 1;j <= 1000;j++) if (maxi == fr[j]) g << j<< " "; f.close(); g.close(); return 0; }
f>>n; for(i=1;i<=n;i++) f>>a[i]; do{ ord=1; for(i=1;i<n;i++) if(a[i]>a[i+1]){ aux=a[i]; a[i]=a[i+1]; a[i+1]=aux; ord=0;} } while(ord==0); for(i=1;i<=n;i++) g<<a[i]<<" "; return 0; } //afisati elementele pare descrescator si suma minimului sir.in 6 21 14 42 81 91 36 sir.out 42 36 14 5 #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[1000],n,j,aux,i,sc,cif,x; int main() { f>>n; for(i=1;i<=n;i++) f>>a[i]; for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(a[i]<a[j]){ aux=a[i]; a[i]=a[j]; a[j]=aux;} for(i=1;i<=n;i++) if(a[i]%2==0) g<<a[i]<<" "; g<<endl; x=a[n]; while(x!=0){ cif=x%10; sc+=cif; x=x/10; } g<<sc; f.close(); g.close(); return 0; }
Matrici
a[1] [1] a[2] [1] a[3] [1] a[4] [1] a[4] [1] a[1] [2] a[2] [2] a[3] [2] a[4] [2] a[4] [2] a[1] [3] a[2] [3] a[3] [3] a[4] [3] a[4] [3] a[1] [4] a[2] [4] a[3] [4] a[4] [4] a[4] [4]
(tablouri bidimensionale)
a[2][5]
a[3][5]
a[4][5]
a[4][5]
Prima linie este formata din elementele: a[1][1] a[1][2] a[1][3] a[1][4] a[1][5] A treia coloana: a[1][3] a[2][3] a[3][3] a[4][3] Un element din matrice este a[i][j] si el se afla in matrice pe linia i si coloana j;
Operatii cu matrici
a)citirea unei matrici citirea de la tastatura f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; citirea de la tastatura cout<<"dati numarul de linii si coloane:"; cin>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) { cout<<"dati element:"; cin>>a[i][j]; }
b)afisarea unei matrici afisarea in fisier for(i=1;i<=m;i++){ for(j=1;j<=n;j++) g<<a[i][j]<<" "; g<<endl; } afisarea pe ecran for(i=1;i<=m;i++){ for(j=1;j<=n;j++) cout<<a[i][j]<<" "; cout<<endl; }
c)suma elementelor dintr-o matrice s=0; for(i=1;i<=m;i++) for(j=1;j<=n;j++) s+=a[i][j]; cout<<"suma din matrice este: "<<s;
Sa se construiasca o matrice astfel incat a[i][j] este minimul dintre i si j Pentu mxn(3x4) rezulta matricea
1111 1222 1233 #include <iostream> #include <fstream> using namespace std; ifstream f("sir.in"); ofstream g("sir.out"); int a[100][100],m,n,i,j; int main() { f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) if(i<j) a[i][j]=i; else a[i][j]=j; for(i=1;i<=m;i++){ for(j=1;j<=n;j++) g<<a[i][j]<<" "; g<<endl; } f.close (); g.close (); return 0; } Suma de pe prima linie si suma de pe ultima coloana #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[10][10],m,n,i,j,s1,s; int main() { f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(j=1;j<=n;j++) s1+=a[1][j]; g<<s1<<endl; for(j=1;j<=n;j++) s+=a[m][j]; g<<s<<endl; f.close (); g.close (); return 0; }
Construiti matricea mxn Ex: pentru o matrice 5x4 rezulta 1234 1234 1234 1234 1234 #include <iostream> #include <fstream> using namespace std; ifstream f("sir.in"); ofstream g("sir.out"); int a[100][100],m,n,i,j; int main() { f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) a[i][j]=j; for(i=1;i<=m;i++){ for(j=1;j<=n;j++) g<<a[i][j]<<" "; g<<endl;} f.close (); g.close (); return 0; } Afisati elementele divizibile cu 3 si minimul. #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[15][20],m,n,i,j,mini; int main() { f>>m>>n; mini=32.000; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=1;i<=m;i++){ for(j=1;j<=n;j++) g<<a[i][j]<<" "; g<<endl;} for(i=1;i<=m;i++) for(j=1;j<=n;j++) if(a[i][j]%3==0) g<<a[i][j]<<" "; g<<endl; for(i=1;i<=m;i++) for(j=1;j<=n;j++) if(a[i][j]<mini) mini=a[i][j];
} Suma pe fiecare linie dintr-o matrice Var I #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[10][10],m,n,i,j,s; int main() { f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=1;i<=m;i++){ s=0; for(j=1;j<=n;j++) s+=a[i][j]; g<<s<<endl; } f.close(); g.close(); return 0; }
Suma de pe linia p #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[10][10],m,n,p,i,j,sp; int main() { f>>m>>n>>p; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(j=1;j<=n;j++) sp+=a[p][j]; g<<sp; f.close(); g.close(); return 0; }
Suma pe fiecare linie dintr-o matrice(cu un vector suplimentar) var II #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[10][10],b[10],m,n,i,j; int main() { f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=1;i<=m;i++) for(j=1;j<=n;j++) b[i]+=a[i][j]; for(i=1;i<=m;i++) g<<b[i]<<endl; f.close(); g.close(); return 0; }
Afisarea in zig-zag a unei matrici sir.in 33 168 345 279 sir.out 168543279 #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[10][10],n,m,i,j; int main() { f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=1;i<=m;i++){ if(i%2==1) for(j=1;j<=n;j++) g<<a[i][j]<<" "; else for(j=n;j>=1;j--) g<<a[i][j]<<" ";} f.close(); g.close(); return 0; }
Ordonarea elementelor dintr-o matrice sir.in 33 7 2 1 10 8 4 3 1 2 sir.out 112 234 7 8 10 #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[10][10],b[100],m,n,i,j,p,aux; int main() { f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=1;i<=m;i++) for(j=1;j<=n;j++){p++; b[p]=a[i][j];} for(i=1;i<=p;i++) for(j=i+1;j<=p;j++) if(b[i]>b[j]){ aux=b[i]; b[i]=b[j]; b[j]=aux;} p=1; for(i=1;i<=m;i++) for(j=1;j<=n;j++){ a[i][j]=b[p]; p++;} for(i=1;i<=m;i++){ for(j=1;j<=n;j++) g<<a[i][j]<<" "; g<<endl; } f.close(); g.close(); return 0; }
Stergerea liniei p dintr-o matrice #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[10][10],m,n,i,j,p; int main(){ f>>m>>n>>p; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=p;i<m;i++) for(j=1;j<=n;j++) a[i][j]=a[i+1][j]; m--; for(i=1;i<=m;i++){ for(j=1;j<=n;j++) g<<a[i][j]<<" "; g<<endl;} f.close(); g.close(); return 0; }
Afisarea numarului de elemente vecine pare pentru fiecare element din matrice(vecinii de sus, jos, stanga, dreapta) #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[24][40],b[13][60],n,m,i,j,k; int main() { f>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(j=0;j<=n+1;j++) a[0][j]=1; for(i=0;i<=m+1;i++) a[i][n+1]=1; for(i=0;i<=m+1;i++) a[i][0]=1; for(j=0;j<=n+1;j++) a[m+1][j]=1; for(i=1;i<=m;i++) for(j=1;j<=n;j++){ k=0; if(a[i-1][j]%2==0) k++; if(a[i][j+1]%2==0) k++; if(a[i+1][j]%2==0) k++; if(a[i][j-1]%2==0) k++; b[i][j]=k; }
Sumele pe diagonalele paralele cu diagonala principala #include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[30][30],n,i,j,s[900]; int main() { f>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=1;i<=n;i++) for(j=1;j<=n;j++) s[n-i+j]+=a[i][j]; for(i=1;i<=2*n-1;i++) g<<s[i]<<endl; f.close(); g.close(); return 0; }
#include <iostream> #include<fstream> using namespace std; fstream f("sir.in",ios::in); fstream g("sir.out",ios::out); int a[24][40],n,i,j,s[19]; int main() { f>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=1;i<=n;i++) for(j=1;j<=n;j++) s[i+j]+=a[i][j]; for(i=2;i<=2*n;i++) g<<s[i]<<" "; f.close(); g.close(); return 0; }
Functii
//doua feluri int sau void //forma generala( tip nume parametri functiei return apel) // v local si globale p. formali sau efectivi // transmiterea parametrilor prin valoare sau referinta /* tip rezultat nume_functie (parametri functiei){ variabile locale(daca este cazul) corpul functiei (instructiunile functiei) return rezultat } */
Pr1.
Sa se scrie care o functie(de tip int) pentru fiecare cerinta: a)suma a doua numere b)calculul ipotenuzei unui triunghi dreptunghic c)suma cifrelor unui numar x d)suma divizorilor unui numar x #include <fstream> #include<cmath> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int x,y,s; //variabile globale int suma(int a,int b){ //suma a doua numere int s; s=a+b; return s; } float ipotenuza(float a,float b){ //ipotenuza unui triunghi dreptunghic return sqrt(a*a+b*b); } long sumacif(long x){ //suma cif lui x long cif,s; // x,cif,s variabile locale s=0; // !!!!!!!!! while(x){ cif=x%10; s+=cif; x=x/10;} return s; } int t; long sum_div(long a){ //suma divizorilor lui a
int d,s=0; for(d=1;d<=a;d++) if(a%d==0) s+=d; return s; } int main() { int d; f>>x>>y; g<<"suma este:"<<suma(x,y)<<'\n'; g<<"ipotenuza este:"<<ipotenuza(x,y)<<'\n'; g<<"suma cifrelor lui x este "<<sumacif(x)<<'\n'; g<<"suma cifrelor lui y este "<<sumacif(y)<<'\n'; g<<"suma divizorilor lui x este "<<sum_div(x)<<'\n'; f.close();g.close(); return 0; }
Pr2.
Sa se scrie care o functie(de tip void) pentru fiecare cerinta: a)suma a doua numere b)calculul ipotenuzei unui triunghi dreptunghic c)suma cifrelor unui numar x d)suma divizorilor unui numar x e)inversarea continutului a doua variabile //functii void //forma generala( void nume parametri functiei apel) // v local si globale p. formali sau efectivi // transmiterea parametrilor prin valoare sau referinta #include <fstream> #include<cmath> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); long x,y,ss,s; //variabile globale void suma(long x, long y,long &s){ //suma a doua numere s=x+y; } void ipotenuza(float a,float b,float &rez){ //ipotenuza unui triunghi dreptunghic rez=sqrt(a*a+b*b); } void sumacif(long x,long &s){ //suma cifrelor lui x long cif; // x,cif,s variabile locale s=0; // !!!!!!!!! while(x){ cif=x%10; s+=cif; x=x/10;} } void sum_div(long a,long &s){ //suma divizorilor lui x int d; s=0; for(d=1;d<=a;d++)
if(a%d==0) s+=d; } void inverseaza(long &a,long &b){ // & transmitere prin adresa int aux; //inverseaza a cu b aux=a;a=b;b=aux; //se poate si cu comanda swap(a,b); } float ip; int main() { f>>x>>y; suma(x,y,ss); g<<"suma este:"<<ss<<'\n'; ipotenuza(x,y,ip); g<<"ipotenuza este: "<<ip<<'\n'; sumacif(x,s); g<<"suma cifrelor lui x este "<<s<<'\n'; sumacif(y,s); g<<"suma cifrelor lui y este "<<s<<'\n'; sum_div(x,s); g<<"suma divizorilor lui x este "<<s<<'\n'; inverseaza(x,y); g<<"x si y dupa inversare"<<x<<" "<<y<<'\n'; f.close();g.close(); return 0; }
pr3
Afisati numerele dintr-un sir ce au suma cifrelor egala cu 10 #include <fstream> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int n,i,a[100]; long sumacif(long x){ long cif,s; s=0; while(x){ cif=x%10; s+=cif; x=x/10;} return s; } int main() { f>>n; for(i=1;i<=n;i++) f>>a[i]; for(i=1;i<=n;i++) if(sumacif(a[i])==10) g<<a[i]<<" "; f.close();g.close(); return 0; }*/
pr4
Afisati numerele dintr-o matrice ce au prop. ca atat ele cat si patratul lor sunt palindroame #include <fstream> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int n,i,j,a[10][10]; int palin(long x){ long cif,inv,y; inv=0; y=x; while(x){ cif=x%10; inv=inv*10+cif; x=x/10; } if (y==inv) return 1; else return 0; } int main() { f>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) f>>a[i][j]; for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(palin(a[i][j])&&palin(a[i][j]*a[i][j])) g<<a[i][j]<<" "; f.close();g.close(); return 0; } // Afisati suma numerele dintr-un sir #include <fstream> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int n,i,j,a[100]; //vectorii se transmit prin referinta(prin adresa) implicit //regula: se transmit datele si se primesc rezultatele // in rest toate variabile vor fi locale (pentru siguranta) int suma(int x[100],int n){ int i,s=0; for( i=1;i<=n;i++) s+=x[i]; return s; } int main() { f>>n; for(i=1;i<=n;i++) f>>a[i]; g<<suma(a,n)<<" "; f.close();g.close();
pr5
return 0; }
// Ordonati elementele dintr-un sir cu o functie de citire vector, afisare vector, ordonare vector #include <fstream> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int n,i,j,a[100]; //vectorii se transmit prin adresa implicit !!!! void citeste(int x[100],int &n){ int i; f>>n; for( i=1;i<=n;i++) f>>x[i]; } void afiseaza(int x[100],int n){ int i; for( i=1;i<=n;i++) g<<x[i]<<" "; g<<'\n';//este echivalent cu g<<endl; } void ordonare(int x[100],int n){ int i,j; for( i=1;i<=n;i++) for(j=i+1;j<=n;j++) if(x[i]>x[j]) swap(x[i],x[j]);// functie ce inverseaza a[i] cu a[j] !!! } int main() { citeste(a,n); afiseaza(a,n); ordonare(a,n); afiseaza(a,n); f.close();g.close(); return 0;}
pr 6
pr7
Afisati suma numerele dintr-o matrice #include <fstream> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int n,i,j,a[10][10]; //matricile si vectorii se transmit prin adresa //regula: se transmit datele si se primesc rezultatele // in rest totul variabile locale(pentru siguranta) int suma1(int x[10][10],int n){ int i,j,s=0; for( i=1;i<=n;i++) for(j=1;j<=n;j++) s+=a[i][j]; return s; }
int main() { f>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) f>>a[i][j]; g<<suma1(a,n)<<" "; f.close();g.close(); return 0; } //pr6. Minimul dintr-o matrice ( citirea si afisarea pentru matrici) //pr7. Inversati doua linii p si q dintr-o matrice //pr8. Determinati punctele de "sa" dintr-o matrice(a[i][j] este "sa" daca este //minimul de pe linie si maximul de pe coloana sau invers
Pr8.
Calc. suma numerelor prime dintr-un sir #include <fstream> #include<cmath> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); long a[100],i,n,s; long prim(long x){ int d; if(x==0||x==1) return 0; for(d=2;d<=sqrt((float)x);d++) if(x%d==0) return 0; return 1; } int main() { f>>n; for(i=1;i<=n;i++)f>>a[i]; for(i=1;i<=n;i++) if(prim(a[i])) s+=a[i]; g<<s; f.close();g.close(); return 0; }
Pr9
Calc. suma a doua numere daca ambele sunt prime si produsul in caz contrar #include <fstream> #include<cmath> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); long x,y; long prim(long a){ int d,k;
for(d=1;d<=a;d++) if(a%d==0) k++; if(k==2)return 1; else return 0; } long prim_eficient(long a){ int d; if(a==0||a==1) return 0; for(d=2;d<=sqrt((float)a);d++) if(a%d==0) return 0; return 1; } int main() { int d; f>>x>>y; if(prim_eficient(x)&&prim_eficient(y)) g<<x+y; else g<<x*y; f.close();g.close(); return 0; } //tema fie 3 nr x,y,z.cal. x nr.de cifre y nr. divizori z cate cif pare are
Pr10.
Construiti o matrice cu primele elemente in ordine crescatoare ce au exact trei divizori. pt. n=4 se va afisa matricea de mai jos: 4 9 25 49 121 169 289 361 529 841 961 1369 1681 1849 2209 2809 obs: numerele cautate sunt patrate de numere prime!! #include <fstream> using namespace std; ifstream f("sir.in"); ofstream g("sir.out"); int i, k, n, j, a[1000][1000], b[10000], nr; long prim(long a ){ int d, kk; d=0; kk=0; for(d=1; d<=a; d++) if(a%d==0) kk++; if(kk==2) return 1; else return 0;} int main() {f>>n; nr=2; k=0; while(k<=n*n){ if(prim(nr)) {k++; b[k]=nr; } nr++; }
k=1; for(i=1; i<=n; i++) for(j=1; j<=n; j++){ a[i][j]=b[k]*b[k]; k++; } for(i=1; i<=n; i++){ for(j=1; j<=n; j++) g<<a[i][j]<<' '; g<<'\n';} return 0; }
Pr11.
//suma elementelor dintr-o matrice #include <fstream> using namespace std; ifstream f("sir.in"); ofstream g("sir.out"); int n,i,j,a[100][100]; void citire(int x[100][100], int &n){ int i; f>>n; for(i=1 ; i<=n; i++) for(j=1; j<=n; j++) f>>x[i][j]; } void afisare (int x[100][100], int n){ int i; for(i=1 ; i<=n; i++){ for(j=1; j<=n; j++) g<<x[i][j]<<' '; g<<'\n';}} int suma (int x[100][100], int n){ int i, j, s=0; for(i=1; i<=n; i++) for(j=1; j<=n; j++) s+=x[i][j]; return s; } int main() { citire (a, n); g<<suma (a,n)<<endl; afisare(a,n); return 0; }
Pr12
//minimul dintr-o matrice #include <fstream> using namespace std; ifstream f("sir.in");
ofstream g("sir.out"); int n,i,j,a[100][100],mini; void citire(int x[100][100], int &n){ int i; f>>n; for(i=1 ; i<=n; i++) for(j=1; j<=n; j++) f>>x[i][j]; } void afisare (int x[100][100], int n){ int i; for(i=1 ; i<=n; i++){ for(j=1; j<=n; j++) g<<x[i][j]<<' '; g<<'\n';}} int minim (int x[100][100], int n){ int i, j; mini=32000; for(i=1; i<=n; i++) for(j=1; j<=n; j++) if(x[i][j]<mini) mini=x[i][j]; return mini; } int main() { citire (a, n); g<<minim (a,n)<<endl; afisare(a,n); return 0; }
Pr13
// inverseaza doua linii specificate dintr-o matrice Sir.in 3 123 456 789 1 3 (se va inversa linia 1 cu linia 3) Sir.out 789 456 123 #include <fstream> using namespace std; ifstream f("sir.in"); ofstream g("sir.out"); int n,i,j,a[100][100], p, q; void citire(int x[100][100], int &n){ int i; f>>n; for(i=1 ; i<=n; i++) for(j=1; j<=n; j++) f>>x[i][j]; }
void afisare (int x[100][100], int n){ int i; for(i=1 ; i<=n; i++){ for(j=1; j<=n; j++) g<<x[i][j]<<' '; g<<'\n';}} void inversare (int x[100][100], int n){ int i, j; f>>p>>q; for(j=1; j<=n; j++) swap(x[p][j],x[q][j]); } int main() { citire (a, n); inversare (a,n); afisare(a,n); return 0; }
Pr14.
//Se considera o matrice patratica // Sa se scrie o functie ce calculeaza //cate elemente din matrice au toate cifrele pare #include <fstream> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int n,j,i,a[100][100]; void citire (int x[100][100],int&n){ int i,j; f>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) f>>x[i][j]; } int calcul (int x){ int cif; while(x){ cif=x%10; if(cif%2==1) return 0; x=x/10; } return 1; } int main(){ int k=0; citire (a,n); for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(calcul(a[i][j])) k++; if(k==n*n) g<<"DA";
pr15
//pentru un numar x construiti numarul format din cifrele sale pare //ex: pt x=12798 => 82 #include <fstream> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int x; int stergere(int x){ int cif,y=0; while(x){ cif=x%10; if(cif%2==0) y=y*10+cif; x=x/10; } return y; } int main(){ f>>x; g<<stergere(x); f.close(); g.close(); return 0; } Pr16. //verificati daca un sir este ordonat crescator #include <fstream> using namespace std; ifstream f("functii.in"); ofstream g("functii.out"); int a[100],n,i,k; int ordonare_cresc(int x[100], int n){ int i; for(i=1;i<=n-1;i++) if(a[i]>a[i+1]) return 0; return 1; } int main(){ f>>n; k=0; for(i=1;i<=n;i++) f>>a[i]; if (ordonare_cresc(a,n)==1) g<<"DA"; else g<<"NU"; f.close(); g.close(); return 0; }