Sunteți pe pagina 1din 5

Tipuri de structuri in C++

STRUCTURA LINIARA Structura liniara cuprinde numai instructiuni de citire, scriere, calcul si atribuire. Exemplu: Scrieti programul pentru interschimbarea a doua numere intregi a si b.

,SEU-.C.algortim Intersc/im#are a, b, c intregi; citeste a, b; scrie a, b; c = a; a = b; b = c; scrie a, b; sfarsit algoritm

!! Intersc/im#are in C++ "include #iostream.h> $oid main () % int a,b,c; cin>>a>>b; !! aici citim a si b cout '' endl''a''#& c%a& a%#& #%c& cout '' endl''a''#& )

STRUCTURA ALTERNATIVA Exemplu: Calculati maximul intre 2 numere intregi algoritm maxim a, b, max intregi; citeste a, b; daca (a>b) max=a alt el max=b; scrie max; sfarsit algoritm !! Maxim intre numere "include #iostream.h> $oid main () % int a,b,max; cin>>a>>b; !! aici citim a si b if !a"#$ max%a& else max%#& cout '' endl''max& (

Exercitiu: &rogramul nu tratea'a si ca'ul in care cele doua numare sunt egale. (odi icati algoritmul ast el incat daca numerele sunt egale, sa a ise'e )Nr* Egale+*

STRUCTURA RE,ETITIVA Exista trei tipuri de structuri repetiti$e: *) Structura cu numar cunoscut de repetitii (0.R) 2) Structura cu numar necunoscut de repetitii si cu test initial (12ILE) +) Structura cu numar necunoscut de repetitii si cu test inal ( -.312ILE) STRUCTURA RE,ETITIVA CU TEST INITIAL 4 12ILE c5t timp !'expresie"$ executa ' sec6enta" ,nde: rotunde. ' sec6enta" este o sec$enta ormata dintr.una sau mai multe instructiuni, numita corpul ciclului. /aca corpul ciclului con0ine mai mult de o instruc0iune aceasta $a i cuprinsa intre acolade. Cum testarea are loc la -nceput corpul ciclului poate s1 nu se execute niciodat1. ,rincipiu de functionare4 At5ta timp c5t este -ndeplinit1 condi0ia dat1 de 'expresie" (c2t timp 'expresie" are $aloarea *) , execut1 corpul ciclului ' sec6enta" ,rincipiu de functionare4 ,as 84 Se e$aluea'1 expresia logica 'expresie" ,as 4 -aca4 3aceasta este ade$arata, atunci se executa ' sec6enta"9 apoi se re$ine la pasul * . daca aceasta este als1 se trece la prima instruc0iune de dup1 ciclu. Exemplu : Se citesc doua numare a si b, naturale. Sa se calcule'e cmmdc(a,b) !! cmmdc!a9#$ "include #iostream.h> $oid main () % int a,b,rest; cin>>a>>b; !! aici citim a si b rest=a3b; 7/ile !rest:%;$ <a%#& #%rest& rest%a=#& ( cout '' endl''#& ) 6tentie4 6cest algoritm se numeste Algoritmul lui Euclid. Exista un altul numit )prin scadere+. Cautati pe internet si gasiti algoritmul. Care este mai bun din cele doua7 Cmmdc!a9#$ a, b, rest intregi; citeste a, b; rest=a 3b cat timp rest 4=5 executa a=b b=rest rest=a 3 b; scrie b; sfarsit algoritm 7/ile !'expresie"$ ' sec6enta"

'expresie" este o conditie (expresie logica), aceasta se scrie -ntotdeauna -ntre parante'e

STRUCTURA RE,ETITIVA CU TEST 0INAL 4 -. > 12ILE repet? ' sec6enta" c5t timp !'expresie"$ do ' sec6enta" 7/ile !'expresie"$&

,nde: 'expresie" este o conditie (expresie logica), ' sec6enta" este o sec$enta ormata dintr.una sau mai multe instructiuni, numita corpul ciclului. ,rincipiu de functionare4 8epeta executia sec$entei de instructiuni ' sec6enta" , pana cand expresia logica ia $aloarea * (pana cand conditia logica este ade$arata) &as*: se executa sec$enta de instructiuni ' sec6enta" &as2: se e$aluea'a expresia logica 'expresie"
3

/aca conditia data de conditia logica este ade$arata, adica daca are $aloarea *, atunci se re$ine pa pasul *; 9n ca' contrar, se iese din ciclu si se executa prima instructiune de dupa ciclu.

.#ser6atie4 /eoarece testarea are loc la s arsit, corpul unui ciclu cu test inal se $a executa cel putin o data. Exemplu : Se citesc doua numare a si b, naturale. Sa se calcule'e cmmdc(a,b) Cmmdc!a9#$ a, b, rest intregi; citeste a, b; repeta rest=a 3b a=b b=rest cat timp rest 4=5 scrie a; sfarsit algoritm !! cmmdc!a9#$ "include #iostream.h> $oid main () % int a,b,rest; cin>>a>>b; !! aici citim a si b do < rest%a=#& a%#& #%rest& ( 7/ile !rest:%;$ cout '' endl''a& )

6tentie4 &rogramul re'ol$a acelasi algoritm ca mai sus, insa la inal se a isea'a $ariabila a, si nu #. /e ce7

STRUCTURA RE,ETITIVA CU NUMAR CUN.SCUT -E ,ASI > 0.R

pentru !'contor"'3'68"9'6 "9 for!'expresieAinitiala"&'expresieAtest"&'expresieAincrem @9'6n"$ executa entare"$ ' sec6enta" ' sec6enta" expresieAinitiala se oloseste, de regula , pentru initiali'area $ariabilei de ciclare. expresieAtest se oloseste pentru a testa daca se executa instructiunea subordonata. daca expresia produce la e$aluare o $aloare di erita de 5 atunci instructiunea subordonata se executa; expresieAincrementare se oloseste pentru incrementarea $ariabilei de ciclare ,rincipiu de functionare4 ,as84 se e$aluea'a expresieAinitiala (un ca' special este acela in care aceasta contine si declaratia $ariabilei de ciclare); ,as : se e$aluea'a expresieAtest . 9n ca'ul in care aceasta produce o $aloare di erita de 5, se executa instructiunea subordonata or; apoi se trece la pasul +), alt el se trece la instructiunea urmatoare &as+: se e$aluea'a expresia de incrementare si se re$ine la pasul 2. Exemplu:Se citeste un numar n natural. Sa se calcule'e suma primelor n numere natural algoritm suma n,i,s intregi; citeste n; s=5; pentru i=*,n executa s=s:i; scrie s; sfarsit algoritm !! suma primelor n numere naturale "include #iostream.h> $oid main () % int n,i,s=5; cin>>n; !! citim n for !i%8& i'%n& i++$ s%s+i& cout '' endl''s& )

Exercitii4

1. Sa se determine suma primelor n numere pare 2. Sa se determine suma primelor n numere impare 3. Sa se determine produsul primelor n numere naturale 4. Dandu-se un numar n sa se afiseze daca este par sau nu 5. Dandu-se a si b, sa se determine suma, produsul si media lor aritmetica 6. Se da un numar a. Sa se determine primii 10 multiplii ai lui. (prin adunare, apoi prin inmultire !. Se considera trei numere a, b, c. Sa se afiseze cel mai mare dintre ele. ". Sa se calculeze c.m.m.d.c. al numerelor a si b. #. Sa se calculeze c.m.m.m.c. al numerelor a si b. 10. Dandu-se un numar n sa se afiseze daca este impar sau nu 11. Dandu-se un numar n sa se afiseze daca este di$izibil cu 3 12. Suma S%1&1'2&1'2'3&(&1'2'3'('n

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