Sunteți pe pagina 1din 17

Introducere in C++

Structura unui program


In functie de complexitatea programului structura acestuia poate diferi de la un caz la altul, insa structura
de baza este urmatoarea:

zona directivelor preprocesor: de cele mai multe ori in program vor fi folosite functii predefinite
de limbajul standard, care sunt stocate in cadrul unor fisiere. Pentru ca functiile respective sa fie
vizibile in programele nostre, este necesara inserarea directivelor preprocesor care specifica
fisierele in care sunt definite functiile predefinite de care avem nevoie.
using namespace std; permite accesarea namespace-ului standard, care include toate
elementele bibliotecii C++.
zona declaratii variabile globale permite declararea variabilelor vizibile pe parcursul intregului
program.
zona de definire a functiilor utilizator
functia principala MAIN() reprezinta corpul efectiv al programului
zona declaratii variabile locale functiei main()
zona de instructiuni - pe langa instructiunni de citire/scriere, conditii, bucle, etc. aici se pot apela
functiile definite de utilizator

Exemplu: Sa se calculeze suma a doua numere a si b citite de la tastatura, prin intermediul unei functii.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

//declararea bibliotecii iostream din care se extrag functiile cin si cout


#include <iostream>;
using namespace std;
//declararea variabilei globale s
int s;
//definirea functiei suma
int suma(int x, int y)
{
int z=x+y;//declararea si initializarea variabilei locale z cu suma valorilor dintre x si y
return z;
}
//functia principala - corpul programului
int main()
{
int a, b; //declararea variabilelor locale functiei main()
//zona de instructiuni
//Se cere introducerea primului numar
cout<<"Primul numar este:";
cin>>a;
//Se cere introducerea celui de-al doilea numar
cout<<"Al doilea numar este:";
cin>>b;
//apelul functiei definite de utilizator - suma
s=suma(a,b);

1
Profesor Ravas Centa

//afisarea rezultatului
25
26
cout<<"Suma dintre "<<a<<" si "<<b<<" este: s;
27
return 0;
28 }

Variabile si tipuri de date in C++


Pentru realizarea algoritmului si a programului care sa rezolve o anumita problema utilizam anumite
variabile avand un anume tip, in functie de necesitati. O variabila este reprezentata printr-un caracter sau
o insiruire ce caractere alfanumerice si reprezinta continutul unei locatii de memorie. Variabilele isi pot
modifica valoarea pe parcursul programului in functie de necesitati.
Atentie: O variabila nu poate fi utilizata in cadrul unui program fara a fi declarata. In cazul in care o
variabila nu este declarata, vom primi un mesaj de eroare in momentul compilarii si lansarii in executie a
programului.
Observatie: In denumirea variabilelor trebuie tinut cont daca literele folosite sunt litere mari sau mici.
Astfel, o variabila a este diferita de o variabila A.
Exemple de variabile:

int a, A; a, respectiv A reprezinta cate o variabila de timp intreg


char c; c reprezinta o variabila de tip caracter
float f; f reprezinta o variabila de tip real
double d; d reprezinta o variabila de tip double
int a[10]; a reprezinta o un vector de 10 numere intregi;
int a[10][10]; a reprezinta o matrice de 10 linii si 10 coloane avand in componenta numere intregi
etc...

Constantele sunt reprezentate tot printr-un caracter sau o insiruire de caractere alfanumerice, insa, spre
deosebire de variabilele normale, acestea nu-si vor modifica valoarea pe parcursul intregului program.
Constantele pot avea de asemenea valori intregi, reale, caracter, etc.
Exemple de constante:

const int raza=10;


const float pi=3.14;
cont char litera='l';

In tabelul de mai jos sunt reprezentate valorile pe care le pot lua variabilelele si constantele, in functie de
principalele tipuri ale acestora:
Tip
Descriere/Dimensiune
unsigned char
tipul caracter / 8 biti
char
tipul caracter / 8 biti
unsigned int/unsigned short int numere intregi, fara semn / 16 biti
short/short int/signed short int numere intregi, cu semn / 16 biti
long/long int/signed long int
numere intregi, cu semn / 32 biti
<="" td="">
<="" td="">
float
numere reale / 32 biti
double
numere reale / 64 biti

Interval
0...255
-128...127
0...65535
-32768...32767
-2147483648...2147483647
<0...4294967295
3.4E +/- 38
1.7E +/- 308

2
Profesor Ravas Centa

Operatori si operanzi in C++


In cadrul operatiilor effectuate in cadrul programelor, avem de-a face cu:

operatorii - simboluri care indica operatia ce urmeaza a fi efectuata: adunare(+), scadere(-),


inmultire (*), impartire (/) etc.
operanzii - variabilele sau valorile utilizate in cadrul operatiilor.

Operatorii pot fi de trei feluri:

unari - necesita un singur operand


binari - necesita doi operanzi
ternari - neceseita trei operanzi

O expresie reprezinta o combinatie intre mai multi operanzi si operatori, aceasta avand, ca si operanzii,
un anumit tip, in functie de combinatia de operatorsi folositi.
Operatori aritmetici unari
OperatorExplicatii
(Post/Pre)Incrementare - aduna valoarea 1 la
++
valoarea operandului
(Post/Pre)Decrementare - scade valoarea 1 de la
-valoarea operandului
Minus unar

Exemple
i++ sau
++i
i-- sau -i
-i

Explicatii pre/post incrementare/decrementare:

y=++x este echivalent cu:


x=x+1;
y=x;
y=x++ este echivalent cu:
y=x;
x=x+1;
y=--x este echivalent cu:
x=x-1;
y=x;
=x-- este echivalent cu:
y=x;
x=x-1;

Operatori aritmetici binari


OperatorExplicatii
+
Adunarea a doi operanzi
Scaderea a doi operanzi
*
Inmultirea a doi operanzi
/
Impartirea a doi operanzi
Modulo are ca rezultat restul impartirii a doi
%
operanzi (se aplica doar operanzilor de tip
intreg/char)

Exemple
x+y
x-y
x*y
x/y
x%y

Observatii

3
Profesor Ravas Centa

Daca in cadrul utilizarii unnui operato binar folosim operanzi de tip intreg, rezultatul va fi tot un
numar intreg, chiar daca rezultatul mathematic poate fi de alt tip (real). De exemplu dacafacem
impartirea x/y unde x si y sunt numere intregi (3/2), rezultatul va fi partea intreaga din raportul
matematic (1).
Operatorii aritmetici binari pot fi combinati cu operatorul de atribuire (=):
OperatorExplicatii
La operandul din stnga se aduna operandul din
+=
dreapta
Din operandul din stnga se scade operandul din
-=
dreapta
La operandul din stnga se inmulteste operandul din
*=
dreapta
Operandul din stnga se imparte la operandul din
/=
dreapta
La operandul din stnga se aduna operandul din
%=
dreapta ??????????????

Exemple
x=x+y
x=x-y
x=x*y
x=x/y
x=x%y

Operatori relationali binari


OperatorExplicatii
<

mai mic decat

>
<=
>=
!=
==

mai mare decat


mai mic sau egal decat
mai mare sau egal decat
diferit de
egal cu

Exemple
x<=""
td="">
x>y
x<=y
x>-y
x!=y
x==y

Operatori logici pe cuvant


OperatorExplicatii
!
Negatie logica
&&
SI logic
||
SAU logic

Exemple
!x
(x<y)&&(a>b)</y)&&(a>
(xb)

Negare

SI logic

SAU logic

op_1 op_2 &&

op_1 op_2

||

op

Operatorul conditional (?)


Este un operator care are in componenta 3 operanzi, avand forma generala urmatoare:
expresie_1 ? expresie_2 : expresie_3
Interpretare:

4
Profesor Ravas Centa

se evalueaza expresie_1.
daca aceasta este adevarata,
se executa expresie_2,
altfel
se executa expresie_3.

Scheme logice
Rezolvarea oricarei probleme implica dezvoltarea unul anumit algoritm, prin intermediul caruia sa putem
dezvolta o solutie. Reprezentarea grafica a fiecarui pas elaborat in alcatuirea solutiei reprezinta schema
logica asociata algoritmului de rezolvare a problemei date.
Elementele grafice componente ale unei scheme logice se numesc blocuri.Orice schema logica poate
avea in componenta sa urmatoarele blocuri:
Bloc

Reprezentare grafica

Observatii

Blocul deSTART

Inceputul
schemei
logice.

Blocul deSTOP

Sfarsitul
schemei
logice.

Blocul de citire

Se citeste o
valoare de
la tastatura
si se
stocheaza in
variabila.

Blocul descriere

Blocul
decalcul/atribuire

Valoarea
stocata in
varibila este
afisata pe
ecran. In
afara
valorilor
variabilelor,
se mai pot
face si
afisari de
mesaje/text.
Se
evaluaeaza
expresia si
rezultatul se
stocheaza in
variabila.

5
Profesor Ravas Centa

Se
evalueaza
conditia.
Daca
conditia este
indeplinita
(1), se
executa
instructiunea
1.
Daca
conditia nu
este
indeplinita
(0), se
executa
instructiunea
2.

Blocul dedecizie

Important:

Orice schema logica are un sigur bloc de start si un singur bloc de stop.
Pe oricare ramura a schemei logice ar merge executia algoritmului, trebuie sa se ajunga la
acelasi bloc de stop.

Folosind elementele grafice de mai sus, se pot realiza scheme logice pentru orice problema.
Exemplu
Sa se realizeze schema logica pentru algoritmul care rezolva urmatoarea problema: Se citesc 2
numere de la tastatura. Sa se calculeze diferenta celor doua numere in cazul in care primul
numar este mai mare decat al doilea, respectiv suma celor doua numere, in caz contrar.
Citirea si scrierea datelor in C++
Pe langa operatiile de calcul efectuate intr-un program, de cele mai multe ori este nevoie sa introducem
anumite valori in anumite variabile, sau sa afisam respectivele valori ale variabilelor. Pentru aceste
scopuri de folosesc functiile de citire, respectiv de scriere.
Citirea variabilelor
Citirea variabilelor se realizeaza cu ajutorul functiei cin si consta in introducerea de la tastatura a unei
valori si atribuirea (automata) a acesteia unei anumite variabile.
Sintaxa: cin<<nume_var;

nume_var - reprezinta variabila care va primi valoarea citita de la tastatura.


Atentie: Pentru a putea
preprocesor iostream:

utiliza

functia cin in

cadrul

programelor,

trebuie

utilizata

directiva

6
Profesor Ravas Centa

#include <iostream>
Observatii:

Valoarea introdusa de la tastatura trebuie sa aiba acelasi tip cu tipul variabilei definit in cadrul
programului.
Se
pot
face
mai
multe
citiri
la
un
moment
dat
:
cin<<nume_var_1<<nume_var_2;

Exemple:

cin<<a;
cin<<a<<b;

Scrierea/afisarea variabilelor
Scrierea/afisarea variabilelor se realizeaza cu ajutorul functiei cout si consta in afisarea pe ecran a unei
valori care se gaseste intr-o variabila sau a unui text cuprins intre ghilimele ("").
Sintaxa:
cout>>nume_var;
cout>>"text_de_afisat";

Atentie: Pentru a putea


preprocesor iostream:

utiliza

functia cout in

cadrul

programelor,

trebuie

utilizata

directiva

#include <iostream>
Observatie: Se pot face mai multe afisari la un moment dat - fie de variabile, fie de text:
cout>>nume_var_1>>"text">>nume_var_2;
Exemple:
cout>>a;
cout>>"Variabila a are valoarea:">>a;

Structuri de control in C++


In functie de cerintele si complexitatea problemelor, algoritmul impune utilizarea anumitor structuri de
control. O structura de controlreprezinta un mod in care este abordata rezolvarea unei probleme. In
functie de acestea, putem intalni urmatoarele structuri:

Structura liniara
Structura decizionala
Structura repetitiva

O structura linara este utilizata in cazul problemelor simple, cand instructiunile se executa secvential
(una dupa alta).Structura liniara este suficienta de exemplu pentru afisarea (neconditionata) unui text sau
calcularea unei expresii. Pe masura ce complexitatea algoritmului creste, se impune
utilizarea structurilor decizionale, cu ajutorul carora se poate conditiona executia uneia sau mai multor
instructiuni, in functie de valorile de adevar ale anumitor expresii. In cazul in care o anumita secventa de
instructiuni se repeta pe parcursul programului, se impune utilizarea unei structuri repetitive.

7
Profesor Ravas Centa

Structura liniara
In cazul structurii liniare, toate instructiunile se executa secvential (una dupa alta), in ordinea in care
acestea sunt scrise in cadrul programului.
Exemplu: Sa se calculeze suma a doua numere naturale oarecare, introduse de la tastatura.
1
2
3
4
5
6
7
8
9
10
11
12
13

#include <iostream>
using namespace std;
int main()
{
int a,b,s;
cout<<"Introduceti primul numar: a=";
cin>>a;
cout<<"Introduceti al doilea numar: b=";
cin>>b;
s=a+b;
cout<<"Suma celor 2 numere este: "<<s;
return 0;
}

Introduceti primul numar: a=2


Introduceti al doilea numar: b=3
Suma celor 2 numere este: 5

Observam ca in acest caz nu avem nevoie sa testam valorile care se introduc, deci fiecare nstructiune se
va executa pe masura ce este intalnita pe parcursul programului.
Structura decizionala
Este utilizata atunci cand pe percursul unui program avem nevoie sa testam valorile anumitor variabile,
iar in functie de valoarea de adevar a rezultatului sa se execute un set sau altul de instructiuni.
Instructiunea IF
Forma generala:
if (expresie)
{
instructiune i_1 ;
instructiune i_2 ;
...
instructiune i_n
}
else
{
instructiune j_1
instructiune j_2
...
instructiune j_n
}
Interpretare:

Daca expresia este satistacuta (are valoarea de adevar 1) atunci se executa primul set de
intructiuni (instructiune i_1... instructiune i_n)
Daca expresia nu este satisfacuta (are valoarea de adevar 0) atunci se executa al doilea set de
instructiuni (instructiune j_1...instructiune j_n)

8
Profesor Ravas Centa

Observatie: Ramura else este optionala, aceasta putand fi omisa in cazul in care nu se doreste
executarea nuci unei instructiuni atunci cand conditia nu este indeplinita (expresia este falsa).
Exemplu: Sa se gaseasca solutia ecuatiei de gradul I de forma : a*x+b=0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#include <iostream>
using namespace std;
int main()
{
float a,b,x;
cout<<"Introduceti primul numar: a=";
cin>>a;
cout<<"Introduceti al doilea numar: b=";
cin>>b;
if (a!=0)
{
x=-b/a;
cout<<"x="<<x;
}
else
cout<<"Ecuatia nu are solutii";
return 0;
}

Introduceti primul numar: a=2


Introduceti al doilea numar: b=3
x=-1.5

Instructiunea switch

In unele cazuri este necesara testarea unei variabile in raport cu mai multe valori, iar, in fuctie de
valoarea care se afla in variabila respectiva sa se execute un anumit set de instruciuni. Acest lucru se
poate implementa fie printr-o inlantuire de mai multe structuri decizionale simple (if) fie prin
intermediul structurii decizionale multiple SWITCH.
Forma generala:
switch (expresie)
{
case valoare 1 : instructiune 1 [break]
case valoare 2 : instructiune 2 [break]
...
case valoare n-1 : instructiune n-1 [break]
[default instructiune n]
}
Interpretare:

se evalueaza expresia, urmand ca valoarea acesteia sa fie comparata cu valorile date in fiecare
caz in parte.
in cazul in care rezultatul expresiei este egal cu una din cvlaorile date, atunci se executa
instructiunea sau setul de instructiuni corespunzatoare valorii potrivite.
daca se intalneste instructiunea break, atunci restul valorilor ramase nu mai sunt evaluate.
In cazul in care rezultatul expresiei nu se gaseste printre valorile date, atunci se executa
instructiunile din ramura implicita (default). Daca aceasta lipseste, atunci nu se executa nici una
din instructiunile prevazute in cazul structurii de control.

9
Profesor Ravas Centa

Exemplu: Se dau doua numere naturale a si b. Sa se introduca unul dintre caracterele: +, -, *, iar, in
fuctie de caracterul introdus, sa se efectueze operatia corespunzatoare. In cazul in care caracterul
introdus nu este unul din cele trei mentionate, sa se afiseze mesajul "Operatie necunoscuta".
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include <iostream>
using namespace std;
int main()
{
int a,b;
char c;
cout<<"Introduceti primul numar: a=";
cin>>a;
cout<<"Introduceti al doilea numar: b=";
cin>>b;
cout<<"Introduceti caracterul: c=";
cin>>c;
switch (c)
{
case '+': cout<<a+b;break;
case '-': cout<<a-b;break;
case '*': cout<<a*b;break;
default: cout<<"Operatie necunoscuta";
}
}

Introduceti primul numar: a=2


Introduceti al doilea numar: b=3
Introduceti caracterul: c=/
Operatie necunoscuta

Structura repetitiva
In foarte multe dintre cazuri este nevoie sa se repete una sau mai multe instructiuni. Pentru aceste cazuri
se folosesc structurile repetitive. Acestea permit reluarea executiei instructiunilor in functie de valoarea
de adevar a unei conditii. Cand conditia nu mai este adevarata, se iese din blucla respectiva si programul
continua cu executia intructiunii imediat urmatoare structurii repetitive.
Structurile repetitive sunt de trei tipuri:

Structura repetitiva cu numar definit de pasi: bucla FOR


Structura repetitiva cu test initial: bucla WHILE
Structura repetitiva cu test final: bucla DO ... WHILE

1. Structura repetitiva cu numar definit de pasi: bucla FOR


Se foloseste atunci cand se cunoaste exact de cate ori se repeta o anumita parte a unui program
si are urmatoarea forma generala:
for (<initializare_contor>;<conditie>;<incrementare_contor>)
{
instructiune 1;
...
instructiune n;
}

10
Profesor Ravas Centa

Exemplu: Sa se calculeze suma unui sir de n numere naturale oarecare, introduse de la


tastatura.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#include <iostream>
using namespace std;
int main()
{
int i, n, a, suma;
cout<<"Cate numere sunt in sir? n=";
cin>>n;
suma=0;
cout<<"Introduceti numerele:"<<endl;
for (i=0;i<n;i++)
{
cout<<"a=";cin>>a;
suma=suma+a;
}
cout<<"Suma celor "<<n<<" numere este: "<<suma;
}

Cate numere sunt in sir? n=3


Introduceti numerele:
a=2
a=3
a=4
Suma celor 3 numere este: 9

2. Structura repetitiva cu test initial: bucla WHILE


Se foloseste atunci cand se doreste repetarea executiei anumitor instructiuni cat timp conditia de
intrare in bucla este adevarata si are urmatoarea forma generala:
while (<conditie>)
{
instructiune 1;
...
instructiune n;
}
Atentie: In cadrul structurii repetitive while (spre deosebire de structura repetitiva do...while)
setul de instructiuni cuprins intre acolade nu se va executa decat atunci cand conditia este
adevarata.
Exemplu: Sa se calculeze suma unui sir de n numere naturale oarecare, introduse de la
tastatura.

1
2
3
4
5
6
7
8
9
10
11
12
13

#include <iostream>
using namespace std;
int main()
{
int i, n, a, suma;
cout<<"Cate numere sunt in sir? n=";
cin>>n;
i=0;
suma=0;
cout<<"Introduceti numerele:"<<endl;
while (i<n)
{
cout<<"a=";cin>>a;

Cate numere sunt in sir? n=3


Introduceti numerele:
a=2
a=3
a=4
Suma celor 3 numere este: 9

11
Profesor Ravas Centa

14
suma=suma+a;
15
i=i+1;
16
}
17
cout<<"Suma celor "<<n<<" numere este: "<<suma;
18 }

3. Structura repetitiva cu test final: bucla DO ... WHILE


Se foloseste (ca si structura cu test initial while) atunci cand se doreste repetarea executiei
anumitor instructiuni cat timp conditia de intrare in bucla este adevarata si are urmatoarea forma
generala:
do
{
instructiune 1;
...
instructiune n;
}
while (<conditie>)
Atentie: In cadrul structurii repetitive do...while (spre deosebire de structura repetitiva while)
setul de instructiuni cuprins intre acolade se va executa cel putin o data.
Exemplu: Sa se calculeze suma unui sir de n numere naturale oarecare, introduse de la
tastatura.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

#include <iostream>
using namespace std;
int main()
{
int i, n, a, suma;
cout<<"Cate numere sunt in sir? n=";
cin>>n;
i=0;
suma=0;
cout<<"Introduceti numerele:"<<endl;
do
{
cout<<"a=";cin>>a;
suma=suma+a;
i=i+1;
}
while (i<n);
cout<<"Suma celor "<<n<<" numere este: "<<suma;
}

Cate numere sunt in sir? n=3


Introduceti numerele:
a=2
a=3
a=4
Suma celor 3 numere este: 9

Structura liniara/decizionala
1.

Sa se calculeze suma a 2 numere naturale.

12
Profesor Ravas Centa

2.

Sa se calculeze media aritmetica a 2 numere naturale.

3.

Doua variabile - a si b - retin valorile pentru doua numere intregi citite de la tastatura. Sa
se interschimbe valorile celor doua numere.

4.

Se dau 2 numere naturale a si b. Sa se calculeze suma dintre a si b daca a<b si


diferenta dintre a si b daca a>b.

5.

Sa se determine daca un numar este sau nu par.

6.

Sa se determine cel mai mare numar natural dintre 3 numere citite de la tastatura.

7.

Scrieti un program care citeste de la tastatura trei valori numerice a, b, c si apoi afiseaza
pe ecran cea mai mare diferenta dintre oricare doua valori date. Ex. a=100, b=15,
c=105. Se va afisa 90.

8.

Intr-un parc se joaca 3 copii care au greutatile a,b,c. Sa se stabileasca daca se pot
aseza pe un balansoar astfel incat acesta sa stea in echilibru.

9.

Cunoscand cele 4 note obtinute de un elev la informatica pe parcursul unui semestru si


nota de la teza scrieti un algoritm care sa afiseze media lui.

10. Sa se calculeze aria si perimetrul unui:

patrat, cunoscand lungimea laturii


dreptunghi, cunoscand lungimile celor doua laturi
triunghi, cunoscand cele 3 laturi
trapez, cunoscand lungimile bazelor si inaltimea
cerc, cunoscand raza

11. Sa se afle radacinile ecuatiei de gradul I cu coeficientii a,b.


12. Sa se afle radacinile ecuatiei de gradul 2. cu coeficientii a,b,c.
13. Ana a ramas singura acasa si vrea sa faca placinte. Pentru aceasta are nevoie de x
grame faina, y grame zahar, z ml lapte, p oua, m kg mere. Stiind ca pretul unui kg de
faina este px, al unui kg de zahar este py, litrul de lapte costa pz, kilogramul de mere
costa pm si ouale sunt pp lei/buc, sa se afle pretul placintei Anei.
14. Sa se determine ultima cifra a sumei x+y, unde x si y sunt date de la tastatura.
15. Sa se determine ultimele doua cifre ale produsului a*b.
16. O persoana are initial la banca o suma de bani S. In primele 6 luni ale anului, dobanda a
fost p%, iar in urmatoarele 6 luni a fost q% din suma la care s-a adaugat si dobanda pe
lunile anterioare, sa se determine suma pe care o va avea persoana la sfarsitul anului.
17. Sa se verifice daca 3 numere a,b,c sunt pitagorice (patratul unuia poate fi scris ca suma
patratelor celorlalte doua).
18. Se citesc de la tastatura 3 numere reale. Sa se scrie un algoritm care verifica daca
acestea pot constitui lungimile laturilor unui triunghi. In caz afirmativ se va afisa tipul
triunghiului (oarecare, isoscel sau echilateral).
19. Se citesc de la tastatura coordonatele extremitatilor a doua segmente. Sa se afiseze
lungimea segmentului mai mare.
20. Sa se verifice daca o fractie a/b se poate simplifica prin k
21. Se citesc de la tastatura 2 numere reale a si b si un operator op. Sa se calculeze

13
Profesor Ravas Centa

expresia a op b, unde op poate fi: +, -, /, %


22. Sa se introduca de la tastatura un numar n si sa se specifice daca acesta apartine
intervalului [a,b], unde a si b sunt numere introduse de la tastatura.

Structuri repetitive (for / while / do...while)

1.

Sa se calculeze suma primelor n numere consecutive: S=1+2+3++n

2.

Sa se calculeze suma primelor n numere oarecare.

3.

Sa se determine cate cifre are un numar natural.

4.

Sa se determine suma cifrelor unui numar natural

5.

Sa se determine cifra cea mai mare a unui numar natural.

6.

Se citesc numere pana la 0. Sa se calculeze suma celor negative si produsul celor


pozitive. Numarul 0 nu se ia in calcul.

7.

Se citeste un numar natural oarecare. Sa se determine de cate ori se gaseste o cifra


(introdusa de la tastatura) in scrierea lui.

8.

Sa se calculeze suma k+(k+1)++ (k+n).

9.

Se citeste un numar n de cel putin 3 cifre. Sa se afiseze de cate ori se poate imparti
numarul n la numarul m (introdus de la tastatura).

10. Sa se determine cel mai mare divizor comun a doua numere naturale a si b citite.
11. Sa se calculeze valoarea lui N factorial, unde N este un numar citit de la tastatura.
12. Sa se numere si afiseze divizorii unui numar.
13. Sa se verifice daca un numar natural este prim.
14. Sa se afiseze si sa se contorizeze toate numerele prime din intervalul [a,b].
15. Sa se afiseze triunghiul:
1
12
123
1234

1 2 3n
pentru un n citit de la tastatura.
16. Sa se afiseze triunghiul :
*
**
***

****.* - de n ori
pentru n citit de la tastatura.
17. Se citesc numere pana la 0. Sa se calculeze suma celor negative si produsul celor
pozitive. Numarul 0 nu se ia in calcul.

14
Profesor Ravas Centa

18. Un numar natural se numeste perfect daca el este egal cu suma divizorilor sai mai mici
decat el.De ex 28 este un numar perfect pentru ca 28=1+2+4+7+14.Sa se determine
toate numerele perfecte mai mici decat un numar dat (10000).
19. Fie un numar format din trei cifre. Sa se afiseze cifrele sale incepand cu cifra unitatilor.
20. Sa se afle daca un numar N introdus de la tastatura este sau nu palindrom. Palindromul
este un numar al carui rasturnat este identic cu numarul initial. Ex : 12321, 2536352,
356653
21. Fie a un numar natural format din 5 cifre. Scrieti un algoritm care sa determine si sa
afiseze numarul format din prima, a treia si a cincea cifra din a.
22. Fie 2 numere cu 4 cifre. Sa se afiseze acela care are suma cifrelor mai mare.
23. Fiind dat un numar de 4 cifre, sa se construiasca inversul acestuia si sa se faca media
aritmetica a cifrelor sale.
24. Sa se verifice daca cifrele unui numar sunt ordonate crescator.
25. Numar deal
26. Sa se creeze un program care sa realizeze descompunerea in factori primi a unui numar
natural n si sa afiseze fiecare factor prim si puterea corespunzatoare.

Vectori in C++
Un vector este un sir de mai multe valori care au acelsi tip, componentele acestuia putand fi identificate
prin numele vectorului urmat (intre paranteze drepte) de pozitia acestora in cadrul vectorului.
Declaratia unui vector se realizeaza prin specificarea tipului componentelor vectorului, identificatorul
vectorului urmat apoi de dimensiunea acestuia intre paranteze drepte:
int a[5];
- declara un sir de 5 de numere intregi
float f[10]; - declara un sir de 10 numere reale
char c[20]; - declara un sir de 20 caractere alfanumerice

Observatie: Primul element al vectorului are coordonata 0 (a[0]), al doilea are coordonata 1 (a[1]),
s.a.m.d.:
int a[5];

Introducerea/afisarea componentelor unui vector sunt de regula operatii realizate cu ajutorul


structurilor repetitive, in principal folosindu-se structura FOR:
1
2
3
4
5
6

#include <iostream>
using namespace std;
int main()
{
int i, n, a[10];
cout<<"Cate numere sunt in sir? n=";

Cate numere sunt in sir? n=5


Introduceti numerele:
a[0]=6
a[1]=2
a[2]=9
a[3]=3

15
Profesor Ravas Centa

7
cin>>n;
8
cout<<"Introduceti numerele:"<<endl;
9
for (i=0;i<n;i++)
10
{
11
cout<<"a["<<i<<"]=";cin>>a[i];
12
}
13 }

a[4]=4

Initializarea vectorilor se mai poate face de asemenea fara introducerea de la tastatura ci direct din faza
declaratiei, astfel:
1
2
3
4
5
6
7
8
9
10
11
12

#include <iostream>
using namespace std;
int main()
{
int i, n;
int a[5]={6,2,9,3,4};
cout<<"Elementele sirului sunt urmatoarele:"<<endl;
for (i=0;i<5;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<endl;
}
}

Elementele sirului sunt urmatoarele:


a[0]=6
a[1]=2
a[2]=9
a[3]=3
a[4]=4

Exemplu: Sa se calculeze suma elementelor unui sir de n numere naturale oarecare, introduse de la
tastatura.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#include <iostream>
using namespace std;
int main()
{
int i, n, a[10], suma;
cout<<"Cate numere sunt in sir? n=";
cin>>n;
suma=0;
cout<<"Introduceti numerele:"<<endl;
for (i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";cin>>a[i];
suma=suma+a[i];
}
cout<<"Suma celor "<<n<<" numere este: "<<suma;
}

Cate numere sunt in sir? n=3


Introduceti numerele:
a[0]=2
a[1]=3
a[2]=4
Suma celor 3 numere este: 9

16
Profesor Ravas Centa

Probleme
1.

Sa se introduca un sir de n numere intr-un vector. Sa se afiseze pe ecran cele n numere


despartite printr-un spatiu.

2.

Sa se calculeze suma primelor n numere oarecare.

3.

Se citesc n numere naturale. Care este suma elementelor aflate pe pozitii impare in
vector? Dar a celor aflate pe pozitii pare ?

4.

Se da un sir de n numere naturale. Sa se determine cate dintre acestea sunt divizibile


cu un numar - div - introdus de la tastatura.

5.

Sa se introduca n numere de la tastatura intr-un vector si sa se determine cate dintre


acestea apartin intervalului [a,b] si care sunt acestea.

6.

Sa se determine numarul maxim, respectiv minim dintr-un sir de n numere naturale


introduse de la tastatura.

7.

Sa se ordoneze crescator/descrescator un sir de n numere naturale.

8.

Se citesc numere pana la 0. Sa se calculeze suma celor negative si produsul celor


pozitive. Numarul 0 nu se ia in calcul.

9.

Sa se afiseze elementele pare care se gasesc intr-un sir de numere naturale precum si
pozitia pe care se afla acestea in cadrul sirului.

10. Se da un sir x cu n elemente intregi unde n este cuprins in intervalul [a,b], iar a si b sunt
introduse de la tastatura. Sa se calculeze:
a) suma elementelor pozitive;
b) produsul elementelor pare;
c) suma elementelor negative aflate pe pozitii impare
d) media aritmetica a elementelor care dau restul 2 la impartirea cu 5
e) sa sa numere cate elemente sunt mai mici ca 6
f) sa se verifice daca al p-lea element din sir este divizibil cu 4
11. Se da un numar format din n cifre. Sa se afiseze cifrele componente ale acestuia in
ordinea in care apar in numar.

Solutie

17
Profesor Ravas Centa

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