Sunteți pe pagina 1din 34

1

Codeblocks

Forma generala a unui program in C++ (Codeblocks) este:

#include <iostream> //include fisierul iostream(in out stream) in program. Fisierul contine
// declaratiile unor functii pt. operatii de intrare/ iesire
using namespace std; //spatiul de nume std grupeaza logic functii si clase specifice P.O.O

int main() //programul (functia) principala
{ //inceput program

cout <<"Salut" << endl; //corpul programului
return 0;

} //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 (char,int,long, long long,unsigned int..)
2)Tipul REAL ex. 2.1231, -123.32, 102(float,double,long double)


TIP MEMORIE
OCUPATA
LIMITE

T
i
p

i
n
t
r
e
g

bool 1B true(1) false(0)
char 1B [0 , 255]
short int 2B [-32.768 , 32.767]
unsigned short int 2B [0 , 65.535]
int 4B [-2.147.483.648 , 2.147.483.647]
unsigned int 4B [0 , 4.294.967.295]
long 4B [-2.147.483.648 , 2.147.483.647]
unsigned long 4B [0 , 4.294.967.295]
long long 8B [-9.223.372.036.854.775.808 ,
9.223.372.036.854.775.807]
unsigned long long 8B [0 , 18.446.744.073.709.551.615]
T
i
p

r
e
a
l

float 4B [1.17549e-038 , 3.40282e+038]
double 8B [2.22507e-308 , 1.79769e+308]
long double 12B [3.3621e-4932 , 1.18973e+4932]

2

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;
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
, (virgula)
;
Enter

Citirea,afisarea si atribuirea

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
3

Probleme
1.Suma a doua numere
#include <iostream>
using namespace std;
int a,b,s;
int main()
{
cout << "dati doua numere";
cin>>a>>b;
s=a+b;
cout<<"suma este:"<<s;
return 0;
}
1.1)Suma a trei numere
1.2)Produsul a 4 numere
2.Aria unui dreptunghi
#include <iostream>
using namespace std;
int l,L,aria;
int main()
{
cout << "dati latimea si lungimea dreptunghiului";
cin>>l>>L;
aria=l*L;
cout<<"aria dreptunghiului este:"<<aria;
return 0;
}
2.1)Gigel este un mare mincinos. El spune in fiecare zi cate o minciuna si drept urmare ii creste nasul
cu y cm dupa fiecare minciuna. Initial lungimea nasului lui Gigel este de x cm. Se cere sa se afiseze
care este lungimea nasului lui Gigel dupa n zile, stiind ca el spune in fiecare zi cate o minciuna.

3.Media aritmetica a 3 numere
#include <iostream>
using namespace std;
int a,b,c;
float med;
int main()
{
cout << "trei numere a,b,c:";
cin>>a>>b>>c;
med=(float)(a+b+c)/3;
cout<<"media este:"<<med;
return 0;
}
10/3,5 = 2.85
11/4 = 2
(float)11/4 = 2.75
4


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)
Ex:
#include <iostream>
using namespace std;
long long a,b,c,s,p;
int main()
{
cout<<"Dati doua numere";
cin>>a>>b;
cout<<"a mod b este:"<<a%b;
return 0;
}
/ (impartire sau div(=ctul))
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 un numar 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;
5

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 comanda (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; //sau (float)a/b; sau (float)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 x";
cin >> x;
a=x;
cout << "a=" << a << endl;
return 0;
}
Daca 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 float x=a; (se citeste a, int a=100) in x se va memora
100.00

b) Operatori relationali
> (mai mare)
< (se subintelege!!!)
>= (mai mare si egal)
<= (mai mic si egal)
== (egal !!!!!!!)
!= (diferit)

c) Operatori de incrementare/decrementare
6

++ (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)
a-- ( explicatie: a=a-1; a scade cu 1)
--a (a scade cu 1)
#include <iostream>
using namespace std;
int a,b;

int main() {
cout << "dati a si b";
cin >> a>>b;
a++;b--; // sau echivalent ++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
Obs:
++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

Ex1:
a=3;
a++;b=a;

ex2:
a=3;
b=a++; => b=3 si a=4

ex2:
a=3;
b=a;a++;

7


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)
&=
|=
^=

Tipul char
- Se foloseste pentru memorarea unui caracter
- (int) in fata unui caracter returneza codul ASCII a caracterului
- (char) in fata unui numar returneaza caracterul cu codul ASCII corespunzator numarului
Ex1:
#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; // se memoreaza caracterul cu codul ASCII 82(82 este codul ASCII a R)
cout<<b<<" are codul ASCII "<<(int)b<<endl; //afiseaza caracterul cu codul ASCII 82
c='*'; //se memoreaza caracterul *
cout<<c<<" are codul ASCII "<<(int)c<<endl; //afiseaza caracterul * si codul sau ASCII 42
return 0;
}

Ex2:
8

#include <iostream>
using namespace std;
int x;
int main()
{
cout<<"dati un numar intre 0 si 127 " ;
cin>>x;
cout <<"caracterul cu codul ASCII introdus este: " <<(char)x<<endl;
x=x+1;
cout<<"caracterul care se afla inaintea sa este: " <<(char)x<<" "<<endl;
return 0;
}
Ex3:
//afisati cel mai mare caracter din doua citite, si caracterul dinainte si dupa primul caracter citit
#include <iostream>
using namespace std;
char a,b,c,d;
int main()
{
cout<<"dati doua caractere " ;
cin>>a>>b;
if(a>b)cout<<"caracterul mai mare este "<<a;
else cout<<"caracterul mai mare este "<<b;
cout<<endl;
c=a-1;d=a+1;
cout<<"caracterul care se afla inaintea sa este: " <<c<<" si cel dupa el este "<<d<<endl;
return 0;
}
/* for(char c=1;c<127;c++){
cout<<c<<" -> "<<(int)c<<" ";
if(c%8==0)cout<<endl;
}*/
f) Operatori logici pe biti actioneaza la nivel de bit pe numere (adica pe reprezentarea
numarului in baza 2 !!!)
<< deplasare la stanga
>> deplasare la drepta
& si
| sau
^ sau exclusiv(xor)
~ 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
9

~0=1

Operatorul deplasare la stanga <<
a=3;
cout<<(a<<2);
3
(10)
=11
(2)
=>

1100
(2)
deplasat => 12
(10)
deci
(3
(10)
<<2)=12
(10)
Practic a<<x este a*2
x
a=1;
cout<<(a<<3); se afiseaza 8 (1 1000 )

Operatorul deplasare la dreapta >>
a=17;
cout<<(a>>2);
17
(10)
=10001
(2)
=>

100
(2)
deplasat => 4
(10)
deci
(17
(10)
>>2)= 4
(10)
Practic a>>x este a/2
x
(div)

a=13;
cout<<(a>>3); se afiseaza 1

Operatorul si &
a=13; b=7;
cout<<(a&b); se afisaza 5
13
(10)
=1101
(2)
7
(10)
= 0111
(2)
& 0101
(2)
=5
(10)



Operatorul sau |
a=13; b=7;
cout<<(a|b); se afisaza 15
13
(10)
=1101
(2)
7
(10)
= 0111
(2)
| 1111
(2)
=15
(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 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. && andsi operator logic
12. || or sau operator logic
13. = += -= /= %= >>= <<= operatori de atribuire

10

Ex:
3%2*5=(3%2)*5=1*5=5
a<=b && z>c
b=a[i++]+4 b=a[i]+4; i++;
a>b||c>b&&d<c a>b||( c>b&&d<c)
!4=0 !0=1 !!1=1 !!2=!0=1
a>!b && x<=y !b , (a>!b) &&( x<=y)

Instructiunea IF

f. generala (variante a),b),c) )


if(conditie) operatie1;
else operatie2;





varianta a)
if(conditie) {
operatii1;
}
else {
operatii2;
}

varianta b)
if(conditie) operatie1;

sau

if(conditie) {
operatii1;
}
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 face 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 ( 0 =fals 1=adevarat, -128 =adevarat, 65201= adevarat)
Tabel pentru conditii logice: 0 false 1 true
a b a&&b a||b
F F F F
F A F A
A F F A
A A A A

Pr1. Min a doua numere
#include <iostream>
using namespace std;
11

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;
}


#include <iostream>
using namespace std;
int a, b, c, maxi;
int main() {
cout << "dati 3 numere";
cin >> a >> b >> c;
maxi = a;
if (maxi < b) maxi = b;
if (maxi < c) maxi = c;
cout<<"Max este:"<<maxi;
return 0;
}

Pr3. Max a 5 numere
#include <iostream>
using namespace std;
int a,b,c,d,e,maxi;
int main()
{
cout << "Dati valori pentru a,b,c,d si e" << endl;
cin >>a>>b>>c>>d>>e;
if(a>=b && a>=c && a>=d && a>=e) maxi=a;
if(b>=a && b>=c && b>=d && b>=e) maxi=b;
if(c>=a && c>=b && c>=d && c>=e) maxi=c;
if(d>=a && d>=c && d>=b && d>=e) maxi=d;
if(e>=a && e>=c && e>=d && e>=b) maxi=e;
cout<<"maximul este:"<<maxi;
return 0;
}

#include <iostream>
using namespace std;
int a, b, c, d, e, maxi;
int main() {
cout << "dati 5 numere";
cin >> a >> b >> c >> d >> e;
maxi = a;
if (maxi < b) maxi = b;
if (maxi < c) maxi = c;
if (maxi < d) maxi = d;
if (maxi < e) maxi = e;
cout<<"Max este:"<<maxi;
return 0;
}



12


Pr4. Ec de gr.I
a X + b =0 2x+4=0 0x+5=0
#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==0)
cout<<"orice x este solutie"<<endl;
else
cout<<"nu exista solutii";
return 0;

}

Pr5. Ec de gr.II
a x
2
+ b x +c=0 sqrt(25)=5
#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)(2*a);
x2=(-b-sqrt(d))/(float)(2*a);
cout<<"x1="<<x1<<endl<<"x2="<<x2;
}
else
cout <<"nu exista solutii reale";
}
else{
if(b!=0){
x1=-(float)c/b;
cout <<x1<<endl;
}
else{
if (c==0)
cout<<"orice x1 e solutie a ecuatiei";
else
cout<<"nu exista solutie pt ecuatie";
}
}
return 0;
}




Pr6. Relatia intre 2 numere(<,>,=)
#include <iostream>
using namespace std;
int a,b;
int main()
{
cout << "Dati valori pentru a, b" << endl;
cin >>a>>b;
#include <iostream>
using namespace std;
int a,b;
int main()
{
cout << "Dati valori pentru a, b" << endl;
cin >>a>>b;
13

if(a>b) cout<<"a >b"<<endl;
if(a<b) cout<<"a<b"<<endl;
if(a==b) cout<<"a==b"<<endl;
return 0;
}

if(a>b) cout<<"a >b"<<endl;
else
if(a<b) cout<<"a<b"<<endl;
else cout<<"a==b"<<endl;
return 0;
}


//intersectia a doua intervale [a,b] si [c,d]
#include <iostream>
using namespace std;
int a, b, c, d;
int main() {
cout << "Dati valori pentru [a, b] [c,d]";
cin >> a >> b >> c>>d;
if(c<a) {swap(a,c);swap(b,d);} // swap(a,c); aux=a;a=c;c=aux;(metoda paharelor)
if(b<c)cout<<"multimea vida";
else if(d>b)cout<<"["<<c<<","<<b<<"]";
else cout<<"["<<c<<","<<d<<"]";
return 0;
}

Pr7. Adunarea a doua durate de timp
9 30 20 (h1 m1 s1) +
3 42 50 (h2 m2 s2)
13 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;
14

}

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
//Fie un nr de maxim 3 cifre.Calculati inversul sau.
#include <iostream>
using namespace std;
int x, cif1, cif2, cif3, y;
int main()
{
cout << "Dati un numar x"<< endl;
cin>>x;
if(x>=0&&x<=9) y=x;
if(x>=10&&x<=99){
cif1=(x%10);
cif2=(x/10);
y=cif1*10+cif2;
}
if(x>=100&&x<=999){
cif1=(x%10);
cif2=(x/10%10);
cif3=(x/100);
y=cif1*100+cif2*10+cif3;
}
cout<<"Numarul este:"<<y<<endl;
return 0;
}
/*148 cif1=8 cif2= 4 cif3=1
cif1*100+cif2*10+cif3=800+40+1=841

1258%10=8 x%10=ultima cifra a lui x
1258%100=58 x*100=numarul format din ultimele doua cifre
1258/10=125 x/10=numarul taiat(fara ultima cifra)
345/10=34
1258/100=12 x/100= taie doua cifre din x
1258/10%10=5
*/
//suma cif. unui numar de maxim 5 cifre
#include <iostream>
using namespace std;
int x, c1, c2, c3,c4,c5,s;
15

int main()
{ cout<<"dati x";
cin>>x;
if (x>=0 && x<=9) s=x;
if (x>=10 && x<=99) {
c1=x%10;
c2=x/10;
s=c1+c2;
}
if (x>=100 && x<=999) {
c1=x%10;
c2=x/10%10;
c3=x/100;
s=c1+c2+c3;
}
if (x>=1000 && x<=9999) {
c1=x%10;
c2=x/10%10;
c3=x/100%10;
c4=x/1000;
s=c1+c2+c3+c4;
}
if (x>=10000 && x<=99999) {
c1=x%10;
c2=x/10%10;
c3=x/100%10;
c4=x/1000%10;
c5=x/10000;
s=c1+c2+c3+c4+c5;
}
cout<<"suma cifrelor lui x este:"<<s;

return 0;
}
//afisati cifra maxima dintr-un numar(cu maxim 3 cifre)
using namespace std;
int x, c1, c2, c3, maxi;
int main()
{ cout<<"dati valoare lui x";
cin>>x;
if (0<=x && x<=9) maxi=x;
if (10<=x && x<=99) { c1=x%10;
c2=x/10;
if (c1>c2) maxi=c1;
else maxi=c2;
}
if (100<=x && x<=999) {c1=x%10;
16

c2=x/10%10;
c3=x/100;
if (c1>c2) maxi=c1;
else maxi=c2;
if (maxi<c3) maxi=c3;
}
cout << "cifra maxima este:" <<maxi<< endl;
return 0;
}
//fie un numar de doua cifre. Afisati cel mai mare numar
//ce se poate forma cu cifrele sale
//ex: x=29 => 92
//x=71 => 71
#include <iostream>
using namespace std;
int x, c1, c2,nr;
int main()
{ cout<<"dati valoare lui x";
cin>>x;
c1=x%10;
c2=x/10;
if (c1>c2) nr=c1*10+c2;
else nr=c2*10+c1;
cout << "numarul maxim este:" <<nr<< endl;
return 0;
}Instructiuni repetitive (for, while, do while)

for
forma generala:
for( i=vali; i<=valf; i++ ) operatie1
sau
for( i=vali; i<=valf; i++ ) {
operatii1
}
Comanda for are trei sectiuni:
-prima =se precizeaza conditiile initiale (ex: i=1;)
- a doua =se precizeaza conditia finala (ex: i<=n;)
- a treia =se precizeaza pasul cu care se incrementeaza contorul i
Ordinea de executie:
se face initializarea,
se verifica conditia,daca conditia este adevarata se fac operatiile,
se incrementeaza pasul,
se verifica conditia,daca conditia este adevarata se fac operatiile,
se incrementeaza pasul,
17

si tot asa pana conditia devine falsa

unde vali valoare initiala
valf valoare finala

executie: i - ia valorile vali,vali+1,vali+2, .valf-1,valf si pentru fiecare valoare a lui i se executa
operatie1.


Ex1: for(i=1;i<=n;i++) cout<<i<< ; se afiseaza pe ecran 1 2 3 4 5 ..n

Exista for(i=n;i>=1;i--) cout<<i<< ; se afiseaza pe ecran n n-1 .. 3 2 1

Exista for(i=2;i<=11;i=i+2) cout<<i<< ; se afiseaza pe ecran 2 4 6 8 10

Ex2: Calculati suma s=1+2+3+100

s=0;
for(i=1;i<=100;i++) s+=i; //sau s=s+i;
cout<<suma este: <<s;
Probleme:


1.Calculati p=2*4*6* ..*n

//p=2*4*..*n
#include <iostream>
using namespace std;
int i,n,p;
int main()
{
cout<<"Dati un numar n par: ";
cin>>n;
p=1;
for(i=2;i<=n;i=i+2) p*=i; //sau p=p*i;
cout<<"Produsul nr pare din sir este:"<<p;
return 0;
}

2.E=1/1+1/2+1/3++1/n


#include <iostream>
using namespace std;
int i,n;
float s;
int main()
{
cout<<"Dati n: ";
cin>>n;
s=0;
for(i=1;i<=n;i++) s+=(float)1/i;
cout<<"Suma este:"<<s;
return 0;
}

3 .S=2+5+8+11+..+n
#include <iostream>
using namespace std;
int i,n,s;
int main()
{
cout<<"Dati un numar n par: ";

4.S=2
3
+4
3
+6
3
++n
3

#include <iostream>
#include<cmath>
using namespace std;
int i,n,s;
int main()
18

cin>>n;
s=0;
for(i=2;i<=n;i=i+3) s+=i;
cout<<"Suma este:"<<s;
return 0;
}

{
cout << "Dati un nr n:";
cin>>n;
for(i=2;i<=n;i=i+2) s+=i*i*i;
//s=s+pow(i,3);
cout<<"Suma este:"<<s;
return 0;
}

5. E=1 + 1*2 + 1*2*3 + 1*2*3*4
++1*2*3*..*n=1!+2!+3!+..+n!

#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;
}
//var II
//s=0;
// for (i = 1;i <= n;i++) {
// p=1;
//for(j=1;j<=i;j++)p *= j; //calculam i!
//s += p;
// }
cout << "Suma este:" << s;
return 0;}
6. Suma a n numere
//suma a n numere

#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;
}

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;
}

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 minimul par. 10. Pentru un sir de n numere aflati maximul.
19

//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 par";
else cout<<"Minimul par este:"<<mini;
return 0;
}
//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;
}


11. Pentru un sir de n numere aflati cate elemente
pozitive, negative si nule sunt.
//cate numere pozitive, negative si nule sunt intr-un
sir.

#include <iostream>
using namespace std;
int x, i, n, 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; //kp++;
if (x == 0) ko = ko + 1; //ko++;
if (x<0) kn = kn + 1; //kn++;
}
cout << "Nr el. pozitive este:" << kp<< endl;
cout << "Nr el. negative este:" << kn<< endl;
cout << "Nr el. nule este:" << ko;
return 0;
}


12.Media aritmetica a numerelor pozitive dintr-
un sir.
//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%3==0) { s += x; k++; }
}
ma = (float)s / k;
cout << "ma=" << ma;
return 0;
}

Tema
S=1/n+2/(n-1)+3/(n-2)+..+n/1
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)
13.Divizorii unui numar x.
20

#include <iostream>
using namespace std;
int x, d, n;
int main()
{
cout<<"dati x";
cin>>x;
for (d=1; d<=x; d++)
if (x%d==0) cout<<d<<" ";
return 0;
}
14.Fie doua numere. Afisati numarul ce are cei mai multi divizori.
15.Verificati daca un numar este perfect.
16.Verificati daca un numar este prim.
17. Media aritmetica a numerelor pare si media
aritmetica a numerelor impare.
#include <iostream>
using namespace std;
int i,n,x,sp,si,kp,ki;
float map,mai;
int main()
{
cout << "Dati un nr n:";
cin>>n;
for(i=1;i<=n;i++){
cin>>x;
if(x%2==0){ sp+=x;
kp++;}

else { si+=x;
ki++;}
}
map=(float)sp/kp;
mai=(float)si/ki;
cout<<"Media aritmetica a nr pare
este:"<<map<<endl;
cout<<"Media aritmetica a nr impare
este:"<<mai;
return 0;
}

18. Fie doua numere. Afisati numarul ce are cei
mai multi divizori.
#include <iostream>
using namespace std;
int i,n,x,y,k1,k2;
int main()
{
cout<<"Dati un nr x:";
cin>>x;
cout<<"Dati un nr y:";
cin>>y;
for(i=1; i<=x; i++)
if(x%i==0) k1++;
for(i=1; i<=y; i++)
if(y%i==0) k2++;
if(k1>k2)
cout<<"x are mai multi divizori";
else if(k1==k2) cout<<"x si y au acelasi nr de
divizori";
else cout<<"y are mai multi divizori";
return 0;
}



WHILE - structura repetitiva cu test initial
Forma generala:
while(cond) instructiune1;
sau
21

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;
}


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;
}

3. Cmmdc a doua numere.
#include <iostream>
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;
4.Cmmmc a doua numere.
#include <iostream>
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;
22

return 0;
}

}
cmmmc=p/a;
cout<<"cmmmc="<<cmmmc;
return 0;
}


Probleme cu structuri repetitive


1.Media aritmetica a numerelor pare si media
aritmetica a numerelor impare dintr-un sir.
#include <iostream>
using namespace std;
int i,n,x,sp,si,kp,ki;
float map,mai;
int main()
{
cout << "Dati un nr n:";
cin>>n;
for(i=1;i<=n;i++){
cin>>x;
if(x%2==0){ sp+=x;
kp++;}

else { si+=x;
ki++;}
}
map=(float)sp/kp;
mai=(float)si/ki;
cout<<"Media aritmetica a nr pare
este:"<<map<<endl;
cout<<"Media aritmetica a nr impare
este:"<<mai;

return 0;
}
2. Fie doua numare x si y. Afisati un mesaj ce
precizeaza care numar are mai multi divizori.
#include <iostream>
using namespace std;
int i,n,x,y,k1,k2;
int main()
{
cout<<"Dati un nr x:";
cin>>x;
cout<<"Dati un nr y:";
cin>>y;
for(i=1; i<=x; i++)
if(x%i==0) k1++;
for(i=1; i<=y; i++)
if(y%i==0) k2++;
if(k1>k2)
cout<<"x are mai multi divizori";
else if(k1==k2) cout<<"x si y au acelasi nr de
divizori";
else cout<<"y are mai multi divizori";
return 0;
}
3.Precizati daca exista numere impare intr-un sir.
#include <iostream>
using namespace std;
int i,x,n,ok;
int main()
{
cout << "Dati un nr n:";
cin>>n; ok=0;
for(i=1;i<=n;i++){
cin>>x;
if(x%2==1) ok=1;
}

23

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();
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;
}
24

g.close();
return 0;
}
g<<"Minimul este:"<<mini<<endl;
g<<"Maximul 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;
}
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;
}
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();

25

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: a
0
a
1
a
2
a
3
a
4
a
5
a
6
a
7
a
8
a
9
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++) f>>a[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
26

pr1
Suma numerelor dintr-un sir
#include <iostream>
#include<fstream>
#define MAX 1000
using namespace std;
fstream f("sir.in", ios::in);
fstream g("sir.out", ios::out);
int a[MAX], 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>
27

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];
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];
28

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;
}
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 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 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()
{
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;
}
Fie un sir de numere in intervalul[1,1000].Afisati
elementele ce apar de cele mai multe ori.
(cu frecventa)
sir.in
6
8 3 8 7 5 3
sir.out 0 1 2 3 4 5 6 7 8 9
3 8 0 0 0 2 0 1 0 1 2 0 0 0 0 0
#include <iostream>
#include<fstream>
using namespace std;
//afisati elementele pare descrescator si suma
cifrelor minimului
sir.in
6
21 14 42 81 91 36
sir.out
42 36 14
5
#include <iostream>
#include<fstream>
using namespace std;
29

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;
}
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 (tablouri bidimensionale)
O matrice este un tablou cu m linii si n coloane.
Marice patratica
Ex: o matrice a 4x5

a[1][1]

a[1][2] a[1][3] a[1][4] a[1][5]

a[2][1]

a[2][2] a[2][3] a[2][4] a[2][5]

a[3][1]

a[3][2] a[3][3] a[3][4] a[3][5]

a[4][1]

a[4][2] a[4][3] a[4][4] a[4][5]

d. principala i=j
sub principala i >j
deasupra principala i<j
d. secundara i+j=n+1
sub i+j>n+1
30

deasupra i+j<n+1
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 din fisier

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
1 1 1 1
1 2 2 2
1 2 3 3
#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++)
Construiti matricea mxn
Ex: pentru o matrice 5x4 rezulta
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
#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()
{
31

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;
}
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;
}
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(i=1;i<=m;i++)
s+=a[i][n];
g<<s<<endl;
f.close (); g.close ();
return 0;
}

Afisati elementele divizibile cu 3 si minimul din
matrice.
#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];
g<<mini;
f.close();
g.close();
return 0;
}
Suma elementelor si numarul elementelor pare
#include <iostream>
#include<fstream>
using namespace std;
fstream f("sir.in",ios::in);
fstream g("sir.out",ios::out);
int a[10][10],s,k,i,j,n,m;
int main()
{
f>>m>>n;
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()
32

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++)
s+=a[i][j];
g<<s<<endl;

for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(a[i][j]%2==0) k++;
g<<k;
f.close();
g.close();
return 0;
}
{
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 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;
}
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;
}
Afisarea in zig-zag a unei matrici
sir.in
3 3
1 6 8
3 4 5
2 7 9
sir.out
1 6 8 5 4 3 2 7 9
#include <iostream>
#include<fstream>
using namespace std;
Ordonarea elementelor dintr-o matrice
sir.in
3 3
7 2 1
10 8 4
3 1 2
sir.out
1 1 2
2 3 4
7 8 10
#include <iostream>
#include<fstream>
using namespace std;
33

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;
}
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();
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;
}
34

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;
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++)
g<<b[i][j]<<" ";
g<<endl;
}
f.close(); g.close(); return 0;}
Sumele pe diagonalele paralele cu diagonala
secundara

#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;
}

S-ar putea să vă placă și