Sunteți pe pagina 1din 22

Sructuri C++

Structura liniara - se executa neconditionat o singura data;


- poate sa contina:

instructiuni de atribuire
instructiuni de citire
instructiuni de scriere

1. Instructiunea de atribuire este reprezentata prin operatorul de atribuire(=)


Prin operatia de atribuire o variabila primeste valoarea unei alte variabile, expresii sau valori.

SINTAXA:

v = expresie; unde v = variabila sau valoare sau expresie

Ex. a=6;
b=a+2;

b devine 8; a este 6; b=8

a=6

a=b+a;

a devine 8+6 =14;

b=8

a=14

b=a-1;

b devine 14-1 = 13

b=13

a=14

Obs. - se observa cum isi modifica valoarea variabilele pe fiecare rand...

1
Profesor Ravas Centa

nr
crt
1

Scheme logice

Pseudocod

Implementare in c++

intreg a,b,c;
real m1,m2;

#include <iostream.h>
void main()
{
inceput
int a,b,c;
float m1,m2;
citeste a,b,c;
cout<<"a="; cin>>a;
m1=(a+b)/2; cout<<"b="; cin>>b;
m2=(b+c)/2; cout<<"c="; cin>>c;
scrie m1,m2;
m1=(a+b)/2;
m2=(b+c)/2;
sfarsit
cout<<"m1="<<m1<<endl;
cout<<"m2="<<m2;
}

2.STRUCTURI DE CONTROL

2. 2. STRUCTURA ALTERNATIVA
1.

INSTRUCTIUNEA IF

2.

INSTRUCTIUNEA SWITCH

INSTRUCTIUNE DE SELECTIE

Aplicatii

1.De la intrarea standard se citesc 3 nr reale a,b,c.Daca cele 3 numere pot forma laturile unui triunghi, sa se afiseze pe ecran un mesaj corespunzator: echilate

2
Profesor Ravas Centa

#include<iostream.h>
void main()
{
int a,b,c;
cout<<"a="<<"b="<<"c=";cin>>a>>b>>c;
if((c*c==a*a+b*b) || (a*a==c*c+b*b) ||(b*b==a*a+c*c) ) cout<<"dreptunghic" ;
else if((a==b)&&(a==c)&&( b==c)&&(a==c)) cout<<"echilateral";
else if((a==b ) ||(b==c) ||(a==c) ) cout<<"isoscel" ;
else cout<<"oarecare";}
2. De la intrarea standard se citesc 4 nr intregi a,b,c si d.Sa se determine maximul si minimul.
Ex. 12 -24 5 3 max=12; min=-24
#include<iostream.h>
void main()
{
int a,b,c,d, max, min;
cout<<"a=" ;cin>>a;cout<<"b="; cin>>b;cout<<"c="; cin>>c; cout<<"d="; cin>>d;
max=a;
if (b>max) max=b;
if(c>max) max=c;
if (d>max) max=d;
cout<<"max="<<max<<endl;
min=a;
if(b<min) min=b;
if(c<min) min=c;
if(d<min) min=d;
cout<<"min="<<min;
}

3. De la intrarea standard se citesc 3 nr reale a, b, c.Sa se calculeze si sa se afiseze pe ecran media aritmetica, media geometrica. Daca cele 3 nr pot forma un
afisati un mesaj corespunzator. ) (3,4,5) (5, 12, 13) (8, 15,17)
#include<math.h>
#include<iostream.h>
void main()
{
int a,b,c,d, ma,s, mg;
cout<<"a=" ;cin>>a;cout<<"b="; cin>>b;cout<<"c="; cin>>c;
s=a+b+c;

3
Profesor Ravas Centa

ma=s/3;
cout<<"ma="<<ma<<endl;
cout<<"mg="<<sqrt(a)*sqrt(b)*sqrt(b)<<endl;
if (a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b) cout<<"Numerele sunt pitagorice ";
else cout<<"Numerele nu sunt pitagorice ";
}
4 Sa se afiseze valoarea functiei f:RR in punctul x=b(b este o valoare introdusa de la tastatura) functia fiind:

#include<math.h>
#include<iostream.h>
void main()
{int x;
cout<<"x=" ;cin>>x;
if (x<-12) cout<<(x*x-6*x);
else if( (x<-5)&&(x>=-12)) cout<<sqrt(x*x*x*x+12) ;
else if ( (x<2)&&(x>=-5)) cout<<2*x+12;
else cout<<14;
}

4
Profesor Ravas Centa

Instructiunea IF
1. Definitie
Structura alternativa dirijeaza executia unei secvente de instructiuni in functie de valoarea unei conditii plasate in blocul de decizie.

2. Sintaxa in pseudocod

daca (expresie logica) atunci secventa1 de operatii


altfel

secventa 2 de operatii

3. Sintaxa in C++

if (conditie_logica) instructiune1;
else instructiune 2;

4.Reprezentarea prin schema logica

5
Profesor Ravas Centa

5.Mecanismul de executie
- se evalueaza conditia logica
- daca e adevarata conditia logica se executa instructiune 1 altfel se executa instructiunea2

6.Observatii
- structura alternativa cu o singura ramura - numai cea adevarat
-structura alternativa imbricata - secventele de operatii(instructiunile) de pe orice ramura pot avea subordonate alte structuri alternative

7. Aplicatii
schema logica

pseodocod

program c++

6
Profesor Ravas Centa

Fie a un nr. dat de la tastatura .Afisati daca se termina in 0

int a;
inceput
citeste a
daca (a%10==0) scrie "Da"
altfel scrie "Nu"
Sfarsit

#include<iostream.h>
void main ( )
{
int a;
cout<<"a="; cin>>a;
if (a%10==0) cout<<"a se termina in 0";
else cout<<"a nu se termina in 0";

2.1. Cunoscand masurile a doua unghiuri exprimate in grade, minute si secunde, sa se alcatuiasca un algoritm care afiseaza suma masurilor unghiurilor exprimate in acelasi mod.
Exemplu:
23 34 55 + 22 33 20 = 46 8 15

Indicatii:

Un minut are 60 de secunde si un grad 60 de minute. Se aduna mai intai secundele, apoi minutele si apoi gradele. Daca suma secundelor depaseste 60, am obtinut un minut care se p
forma de transport, iar ceea ce ramane peste 60 reprezinta numarul de secunde ale rezultatului. La fel se intampla si la adunarea minutelor, putand aparea un grad transport catre s
#include<iostream.h>
void main()
{

7
Profesor Ravas Centa

int m1,m2,s1,s2,g1,g2, g,m,s;


cout<<"dati masura primului unghi in grade,minute si secunde ="<<endl;
cin>>g1>>m1>>s1;
cout<<"dati masura celui de-al doilea unghi in grade,minute si secunde ="<<endl;
cin>>g2>>m2>>s2;
//1 grad=60 minute = 3600secunde si 1 minut=60secunde
if( g1<360 && g2<360 && m1<60 && m2<60 && s1<60 &&s2<60)//verificam daca valorile sunt corecte
{
if((s1+s2)>=60){ s=(s1+s2)%60;
m=1;}
else {s=s1+s2;

m=0;}
if((m1+m2) >=60) {m=(m1+m2+m)%60;
g=1;}
else { m=m1+m2;
g=0;}
g=g1+g2+g; cout<<g<<"grade"<<m<<"minute"<<s<<"secunde"<<endl;
}
else
cout<<"date incorecte";}

INSTRUCTIUNEA FOR
1. Definitie
CONTORUL- este o v a r i a b i l a in care se numara operatiile executate
- poate fi crescator ( vi<vf ) sau descrescator ( vi>vf )

2. Sintaxa in pseudocod

8
Profesor Ravas Centa

unde: vi= valoare initiala


vf= valoare finala
pas= incrementare/decrementare

3. Schema logica a structurii in pseudocod

9
Profesor Ravas Centa

principiul de executie :

se initializeaza contorul
se scrie conditia de continuitate (contor<= v_f sau contor >=v_f)
se executa secventa de operatii
se modifica contor (incrementare/decrementare)
se repeta initializare contor pentru conditia de continuitate(A) altfel se iese din ciclu(F)

4.Sintaxa in C++

10
Profesor Ravas Centa

FOR ( e1; e2; e3 )


S;
unde: e1= initializare contor
e2= conditii de continuare
e3= modificare contor
S= secventa de operatii

5.Implementarea in C++
- reprezentare prin scheme logice

11
Profesor Ravas Centa

- implementare

12
Profesor Ravas Centa

Structuri Repetitive Conditionate sau iterative


structura conditionata anterior

struct ura condit ionata posterior

while
1. Sintaxa in pseudocod
cat timp
conditie_logica
repeta instructiune
sfarsit cat timp
2.Sintaxa in C++

do

while

1. Sintaxa in pseudocod
repeta
instructiune
pana cand

conditie

2. Sintaxa in C++

13
Profesor Ravas Centa

while
(conditie_logica)
instructiune;

do
{ instructiune;
} while (conditie_logica);

obs.
obs.
- instructiunea se executa in cazul in care conditia logica este adevarata - instructiunea se executa cat timp conditia logica e adevarata;
- instructiunea se executa cel putin o data chiar daca conditia logica nu e
indeplinita
3.Schema logica

3.Schema logica

14
Profesor Ravas Centa

4.Mecanism de functionare
- se verifica conditia logica
- daca este adevarata se repeta instructiune
- cat timp ct_logica e adevarata
-altfel iesim din structura pe ramura fals
5.Aplicatii
Suma numerelor pare
# include<iostream.h>
void main()
{
int s=0,i=2,n;
cout<<"n="; cin>>n;
while ( i%2==0)
{ s=s+i
;
i++;
}
cout<<"suma nr pare="<<s; }

4. Mecanism de functionare: (executa instructiunile cat timp conditie


adevarata)
- se executa instructiune
- se testeaza conditia logica
- daca nu e indeplinita conditia se repeta instructiunea pana cand e adevarata
-altfel iesim din structura
# include<iostream.h>
void main()
{
int s=0, i=2, n;
cout<<"n="; cin>>n;
do
{
s=s+i;
i=i+1;
} while(i%2==0);
cout<<"s="<<s; }

15
Profesor Ravas Centa

16
Profesor Ravas Centa

5.Aplicatii
Suma cifrelor unui numar
#include<iostream.h>
void main()
{
int x,s=0;
cout<<"x=";cin>>x;
while (x != 0)
{ s=s+x%10;
x=x/10; }
cout<<"suma cifrelor unui nr="<<s; }

ex. x=123
x!=0
123 != 0
12 != 0
1 != 0

s=s+a%10
s=0+123%10=0+3=3
s=3+12%10=3+2=5
s=5+1%10=5+1=6

#include <iostream.h>
void main()
{
int x, s=0;
cout<<"x=";cin>>x;
do
{ s=s+x%10;
x=x/10;
} while (x != 0) ;
cout<<"sum_cif="<<s; }

x=x/10
x=123/10=12
x=12/10=1
x=1/10(se opreste algoritm)

17
Profesor Ravas Centa

5. Aplicatii - prin aplicatia codeBlocks


Afisati inversul numarului a.Ex. 123=321
# include<iostream>
using namespace std;
int main( )
{
int a, inv = 0 ;

18
Profesor Ravas Centa

cout<<"a="; cin>>a;
while (a != 0)
{ inv = inv*10+(a%10) ;
a=a /10;
}
cout<<"inversul numarului="<< inv;
}

ex.a=123
a != 0
123 != 0
12!=0
1!=0

inv = inv*10 + a%10


a=a/10
inv=0*10+123%10=0+3=3
a=123/10=12
inv=3*10+12%10=30+2=32
a=12/10=1
inv= 32*10+1%10=320+1=321 a=1/10(algoritm stop)

5.Aplicatii - prin codeblocks


Afisati cate cifre contine numarul introdus de la tastatura, de tip intreg.
# include<iostream>
using namespace std;
int main()
{
int a, nr_cif=0;
cout<<"numarul introdus este a="; cin>>a;
while (a !=0)
{
nr_cif = nr_cif + 1;
a = a/10; }
cout<<"numarul cifrelor este="<<nr_cif; }

19
Profesor Ravas Centa

SINTAXA
La d e c l a r a r e a unui tablou trebuiesc precizate:
1. tipul datelor din tablou
2. numele tabloului
3. numarul de componente(unidimensional sau bidimensional)
Un tablou unidimensional se declara dupa s t r u c t u r a :
tip_baza nume_tablou [numar componente]

Ex. int v [20];


1. datele din tablou sunt de tip int;
2. nume tablou este v;
3. are 20 componente

v[1] = 9

----componenta 1

v[2] = 80

----componenta 2

v[3] = 67

----componenta 3

CITIRE VECTOR
cout<<"dati numarul de componete, n="; cin>>n;

20
Profesor Ravas Centa

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


{
cout<< " v[ "<<i<<" ] ="; cin>> v[i];
}

AFISARE VECTOR
for (i=1; i<=n; i++ )
cout<< v[i]<< " ";

Aplicatii
1. Se da un vector cu n componente intregi. Calculati suma elementelor pozitive si divizibile cu 3.
#include <iostream>
using namespace std;
int main()
{
int v[20], i, n, s=0;
cout<<"dati numarul de componete, n="; cin>>n;
for ( i=1; i<=n; i++)

21
Profesor Ravas Centa

{
cout<< " v[ "<<i<<" ] ="; cin>> v[i];
}
for (i=1; i<=n; i++ )
if ( ( v[i] > 0) && (v[i]%3==0) ) s=s+v[i];
cout<< "suma elem poz div cu 3="<<s;
}

22
Profesor Ravas Centa

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