Sunteți pe pagina 1din 46

cdamian@ee.tuiasi.

ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

LABORATOR
ALGORITMI Limbajul C
1. Definiia algoritmilor. Reprezentarea algoritmilor. Clasificare. 2. Algoritmi secveniali. 3. Algoritmi ramificai. 4. Algoritmi repetitivi. 5. Algoritmi pentru prelucrarea tablourilor de date.

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

1. Definiie. Reprezentare. Clasificare. Definiie: Algoritmul poate fi definit ca o succesiunea finita de pai care trebuie parcurs pentru a obine, pornind de la datele iniiale (numite i date de intrare) informaiile pe care dorim s le determinm prin calcul (date de ieire). Obs. Alctuirea algoritmului precede n mod obligatoriu scrierea programului de calcul.
Etapele alctuirii algoritmului de rezolvare a unei probleme: nelegerea textului problemei; precizarea mrimilor (datelor) care sunt cunoscute (date iniiale sau date de intrare); precizarea mrimilor cerute, a cror valoare se calculeaz (date de ieire); stabilirea relaiilor de calcul pentru fiecare mrime cutat, eventual i pentru mrimi intermediare (modelul matematic); alegerea identificatorului (numelui) pentru fiecare variabil care intervine n modelul matematic; reprezentarea algoritmului (pseudocod i organigram); verificarea algoritmului prin parcurgerea tabelului de verificare i compararea rezultatelor cu valorile obinute prin rezolvarea direct a problemei.

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Reprezentarea algoritmilor Modalitile de codificare a algoritmilor sunt diverse. Cele mai folosite dintre acestea sunt: Pseudocodul este o reprezentare semantic a operaiilor. Aceast form este cea mai apropiat de Schema logic (organigrama) este reprezentarea algoritmului sub forma unei succesiuni de

programul de calcul. simboluri grafice interconectate.Fiecare operaie este indicat printr-un simbol grafic distinct.

Clasificarea algoritmilor Organizarea unui algoritm este determinat de: problema de rezolvat, modelul matematic ales, limbajul de programare folosit pentru implementare. Cea mai utilizat form de alctuire este aceea a evidenierii n cadrul algoritmului numai a unor blocuri de operaii tip. Aceste se numesc structuri fundamentale (tip) i sunt: structura secvenial; structura de decizie; structura repetitiv (cu cele trei variante: contorizare, test anterior, test posterior ).

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I


blocuri de intrare/ieire

www.infopuc.ro

blocuri delimitatoare

start stop

Citire date

Afisare date

blocuri de atribuire

blocuri de decizie dubl

bloc de calcul NU Condiie ? DA

blocuri de conectare i i

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I 2. Structura secvenial

www.infopuc.ro

Structura secvenial include operaiile de:

citirea date de intrare; calculul valorii unei/unor expresii i atribuirea valorii unei/unor variabile; afiarea rezultatelor; schema logic

pseudocod
program ex1 citete datele de intrare ecou (afieaz datele de intrare) evalueaz expresiile de calcul afieaz rezultatele sfrit program

start citete datele de intrare

ecou

bloc de calcul afiare

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 1. S-a depus la o banc suma de b lei pe termen de 6 luni.


Cunoscnd c dobnda anual oferit de banc este de 23%, s se determine suma aflat n cont la sfritul termenului de depunere. Etapele rezolvrii problemei: a) Definirea datelor de intrare/ieire Date de intrare : - suma iniial de bani b [n lei] - dobnda anual db = 23% - termenul de depunere n = 6 luni Date de ieire: - Suma final n cont bf [n mii lei] b) Modelul matematic: - dobnda lunar dl=(23/12)[%] - suma n cont dup prima lun s1=b+b(dl/100)=b(1+dl/100) - suma n cont dup a doua lun s2=s1+s1(dl/100)=s1(1+dl/100)=b(1+dl/100)2 - suma final dup n luni bf=b((1+dl/100)n )/1000

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

pseudocod
program banc citete b, db, n afieaz b, db, n //ecou

schema logic
start

citete b,

db, n

afieaz

b, db, n

dl = db / 12 //dobnda lunar bf =( b ( 1 + dl / 100 )n )/1000 afieaz bf dl = db / 12 bf =( b ( 1 + dl / 12 ) n)/1000


afiare bf

sfrit banc

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 2. Fie z1 = a1 + b1 * i, z2 = a2 + b2 * i dou numere complexe.


Se cere s se calculeze z1 + z2, z1-z2 si z1*z2.

Etapele rezolvrii problemei: a) Definirea datelor de intrare/ieire b) Modelul matematic: start Zre = a1 + a2 Date de intrare : Zim = b1 + b2 - a1, b1, a2, b2 citete a1, b1, a2, b2 Date de ieire: - rezultatul operaiei matematice Zre + Zim * i afieaz a1, b1, a2, b2
program complex citete a1, b1, a2, b2 afieaz a1, b1, a2, b2 //ecou Zre = a1 + a2 Zim = b1 + b2 afieaz Zre + Zim * i sfrit complex Zre = a1 + a2

Zim = b1 + b2
afiare Zre + Zim * i

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 3. Fie z1 = a1 + b1 * i, z2 = a2 + b2 * i dou numere complexe.


Se cere s se calculeze z1 * z2.

Etapele rezolvrii problemei: a) Definirea datelor de intrare/ieire b) Modelul matematic: start Zre = a1*a2-b1*b2 Date de intrare : Zim = a1*b2+a2*b1 - a1, b1, a2, b2 citete a1, b1, a2, b2 Date de ieire: - rezultatul operaiei matematice Zre + Zim * i afieaz a1, b1, a2, b2
program complex citete a1, b1, a2, b2 afieaz a1, b1, a2, b2 //ecou Zre = a1 * a2 - b1 * b2 Zim = a1 * b2 + a2 * b1 afieaz Zre + Zim * i sfrit complex Zre = a1*a2-b1*b2

Zim = a1*b2+a2*b1
afiare Zre + Zim * i

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Tabel de verificare:

instruciuni Citire a1, b1, a2, b2 3, 4, 2, 6

Afiare a1, b1, a2, b2 Zre = a1*a2 - b1*b2 Zim = a1*b2 + a2*b1 Afiare Zre + Zim * i
STOP

3, 4, 2, 6 Zre = 3*2-4*6=-18 Zim = 3*6+2*4=26 -18+26*i


STOP

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 4. Scriei un algoritm care s efectueze urmtoarele operaii:


S = a + b ; D = a b ; P = a * b , pentru a i b date de utilizator.

Exemplul 5. Fie x, y, z trei numere date de utilizator. S se calculeze media


aritmetic a celor trei numere.

Exemplul 6. Fie a, b, c laturile unui triunghi date de utilizator. S se


calculeze perimetrul Pe i aria triunghiului A.

Exemplul 7. Se d polinomul: 3 x3 + 4 x2 2 x + 1. S se scrie un algoritm


care s calculeze valoarea polinomului pentru x dat de utilizator.

A p( p a)( p b)( p c)

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 8. Fie R1, R2, R3 trei rezistene. Calculai curentul I, daca circuitul
este alimentat cu o tensiune U.

R1

R2

R3
R1 R2

I1 U R2 R1 R3 I2 U I3

R3

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

1.

O persoana economiseste in prima luna 30% din venitul lunar, in a doua luna 21% din venitul lunar iar in a treia luna 15% din venitul lunar. In cea de-a doua luna persoana respectiva primeste o marire de salariu de 10%. Sa se calculeze suma economisita dupa cele trei luni. Folositi si operatorul cast. Afisarea datelor trebuie sa corespunda cu urmatorul prototip fig1:

fig1
2. Se introduc doua numere intregi de la tastatura (intre 1 si 15). Sa se foloseasca operatori aritmetice, relationali logici si operatori la nivel de bit pentru cele 2 numere. Doar rezultatele de la operatorii relationari vor fi scrise de utilizator, restul sunt calculate de PC dupa modelul matematic dat. Afisarea datelor trebuie sa corespunda cu urmatoarea imagine : fig 2.

fig3 fig2

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

3.

Sa se foloseasca adresarea indirecta (pointeri) si tablouri intr-un exemplu care are ca date de intrare 4 prenume. Se afiseaza in consola cele 4 cuvinte si lunginea a 2 tablouri in care sunt stocate prenumele si lungimea a doi pointeri care pointeaza la adresele de inceput a doua tablouri. fig3

fig3

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

LABORATOR
ALGORITMI
1. Definiia algoritmilor. Reprezentarea algoritmilor. Clasificare. 2. Algoritmi secveniali. 3. Algoritmi ramificai (de decizie). 4. Algoritmi repetitivi. 5. Algoritmi pentru prelucrarea tablourilor de date.

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I 2. Structura de decizie (ramificat)

www.infopuc.ro

Structura de decizie (se mai numete i structur alternativ sau structur ramificat) introduce n algoritm operaia de ramificare, stabilirea valorii adevrat sau fals a acesteia i adoptarea unei decizii privind modul n care se continu calculele.

schema logic
pseudocod
dac (test?) atunci set instruciuni 1 NU

test?

DA

altfel
set instruciuni 2 sfrit dac

set instruciuni 2

set instruciuni 1

aciune 3

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 1. Fie a i b dou numere date de utilizator. Se cere s se afieze maximul i suma lor.
a) Definirea datelor de intrare/ieire b) Modelul start matematic: program max_suma S=a+b Date de intrare : a, b citete a, b Date de ieire: numrul maxim (a sau b) i suma: S

afieaz a, b atunci

citete a, b

dac ( a > b )

afieaz a, b

afieaz a
altfel afieaz b sfrit dac
S=a+b

NU
afiare b

a>b ?

DA
afiare a

S=a+b afiare S stop

afieaz S sfrit max_suma

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

instruciuni
citete a, b afieaz a, b

Verif 1 3, 8 3, 8 3>8?

Verif 2 7, 2 7, 2

a>b?
NU afieaz a DA

7>2 ?
7

afieaz b

8
S = 3 + 8 = 11 11 STOP S=7+2=9 9 STOP

S=a+b
afieaz S

STOP

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exist posibilitatea ca secvena de decizie s fie alctuit dintr-un singur subbloc de instruciuni

pseudocod
dac (test?) atunci set instruciuni 1 sfrit dac

schema logic

NU

test?

DA

set instruciuni 1

aciune 3

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 2. S se afieze modulul unui numr x dat de utilizator. a) Definirea datelor de intrare/ieire Date de intrare : x Date de ieire: modulul lui x b) Modelul matematic: x dac x>0 si ( x ) dac x<0

start
instruciuni

program modul citete x afieaz x dac ( x < 0 ) atunci x=-x sfrit dac afieaz x sfrit modul
stop
afieaz x citete x afieaz x afieaz x 3 3<0 ? -5 -5 < 0 ? x=-(-5) 3 STOP 5 STOP x<0? NU DA x=-x x=-x afieaz x STOP Verif 1 Verif 2

citete x

-5

NU

x<0 ?

DA

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 3. S se rezolve ecuaia de gradul I ( a * x + b = 0 ) n ipoteza considerrii tuturor variantelor posibile ale datelor de intrare.
a) Definirea datelor de intrare/ieire Date de intrare : a, b Date de ieire: x b) Modelul matematic: se alctuiete relaia: x = - b / a dac a 0 atunci x= - b / a dac a = 0 atunci sunt dou cazuri: dac b = 0, ecuaia devine 0 * x + 0 = 0 dac b 0, ecuaia nu are soluii (imposibilitate)

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

program ecuaie citete a, b afieaz a, b dac ( a = 0 ) atunci


NU dac ( b = 0 ) atunci afieaz Ec. are o infinitate de soluii altfel afieaz Ec. nu are solutii sfrit dac

start
citete a, b

afieaz a, b

a=0 ?

DA
b=0 ?

NU

DA

Ec. are o infinitate de solutii

altfel x=-b/a afieaz x sfrit dac sfrit ecuaie

Ec. nu are solutii

x=-b/a afiare x

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

instruciuni
citete a, b
afieaz a, b a=0? NU b=0? NU DA afieaz infinitate de soluii afieaz nu sunt solutii DA

Verif 1

Verif 2

Verif 3

0, 1
0, 1 0=0 ? 1=0?

0, 0
0, 0 0=0 ? 0=0 ? afieaz inf. de soluii

2, 3
2, 3 2=0 ?

afieaz nu sunt soluii x = - 3 / 2 = - 1,5 - 1,5 STOP STOP STOP

x=-b/a

afieaz x
STOP

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 4. Se dau trei numere: a, b, c. S se afieze n ordine descresctoare.


program ordonare citete a, b, c afieaz a, b, c dac ( a > b ) atunci dac ( b > c ) atunci afieaz a, b, c altfel dac ( c > a ) atunci afieaz c, a, b altfel afieaz a, c, b sfrit dac sfrit dac altfel dac ( b > c ) atunci dac ( a > c ) atunci afieaz b, a, c altfel afieaz b, c, a sfrit dac altfel afieaz c, b, a sfrit dac sfrit dac sfrit ordonare

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I


start citete a, b, c afieaz a, b, c

www.infopuc.ro

NU NU
b>c ?

a>b ?

DA NU
b>c ?

DA NU

DA
afieaz a, b, c

NU
afieaz c, b, a

a>c ?

DA
afieaz b, a, c

c>a ?

DA

afieaz c, a, b afieaz a, c, b

afieaz b, c, a

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

<math.h>
Putere double pow(double base, double exponent); Ex: p = pow(a,2);
Radical double sqrt(double x); Ex: rad = sqrt(2); Exponent double exp(double x); Ex: expo = exp(3); Sinus double sin(double x); Ex: sinus = sin(M_PI); Logaritm double log(double x); Ex: logaritm = log(5);

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 5. Scriei un algoritm care s afieze rdcinile ecuaiei de gradul


doi scris sub forma: ax2 +bx +c = 0.

Exemplul 6. Scriei un algoritm care s afieze valoare urmtoarei funcii


descris pe intervale: 0, 2x+3, 4 x2 + 7 , 0, x ( - , -100) x [ - 100, 0) x [ 0, 100] x ( 100, +)

f(x)=

Exemplul 7. Se d un numr pozitiv de la tastatur (max 9999). S se scrie


un algoritm care s afieze numrul de cifre ale numrului, folosind numai

structura ramificat.

Exemplul 8. Se dau trei numere de la tastatur. S se scrie un algoritm care


s afieze dac numerele sunt ntr-o progresie aritmetic. Dar progresie geometric? S se repete algoritmul pentru patru numere.

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

LABORATOR
ALGORITMI
1. Definiia algoritmilor. Reprezentarea algoritmilor. Clasificare. 2. Algoritmi secveniali. 3. Algoritmi ramificai (de decizie). 4. Algoritmi repetitivi. 5. Algoritmi pentru prelucrarea tablourilor de date.

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I 3. Structura repetitiv.

www.infopuc.ro

Problemele rezolvate cu ajutorul SC necesit parcurgerea repetat a unor grupuri de instruciuni de calcul i de decizie. Pentru o programare mai convenabil n limbajele de programare s-au definit structurile repetitive.

i=0

iniializare variabil

iniializare variabil

i<n ?
NU

DA
set instruciuni i=i+1

test ? NU

DA
set instructiuni modificare variabila

modificare variabila set instructiuni

DA test ? NU test final

contorizare

test iniial

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Structura repetitiv cu contorizare

Aceast structur este avantajoas pentru rezolvarea problemelor n care se cunoate cu


exactitate numrul de parcurgeri ( pai ) repetate ale instruciunilor din corpul ciclului. Se pot defini structuri repetitive controlate de un singur contor ( bucl simpl) sau de dou sau mai multe contoare ( cicluri suprapuse ). Structurile cu contorizare sunt folosite n special n problemele care prelucreaz tablouri de date.

schema logic
i=0

pseudocod
pentru i = ( 0, n-1 ) execut set instruciuni 1 sfrit pentru

i<n ? NU

DA
set instruciuni i=i+1

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

GENERALITI: !!! Operatorul / returneaz ctul operaiei de mprire dintre doi operatori. Rezultatul este de tip: - ntreg dac cei doi operatori sunt de tip ntreg - real dac cel puin unul dintre operatori este de tip real !!! Operatorul % returneaz restul operaiei de mprire dintre cei doi operatori.

7/2=3 7,0 / 2 = 3,5

7/3=2 7%3=1

123 / 10 = ?
123 % 10 = ?

26 / 3 = ? 35 % 7 =?

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 1. S se afieze primele n numere naturale, unde n este dat de utilizator. a) Definirea datelor de intrare/ieire Date de intrare : n

pseudocod
program n_numere citete n afieaz n pentru i = ( 0, n-1 ) execut afieaz i sfrit pentru sfrit n_numere

s c h e m a l o g i c

start citete n afieaz

i=0

i<n ? NU

DA
afieaz i i=i+1

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 2. S se afieze primele n numere naturale pare n ordine invers, unde n este dat de utilizator. a) Definirea datelor de intrare/ieire s Date de intrare : n start c

pseudocod
program n_numere citete n afieaz n pentru i = ( n-1, 0 ) execut afieaz 2 * i sfrit pentru sfrit suma

h e m a l o g i c

citete n afieaz

i = n-1

i[0,n-1] ? NU

DA
afieaz 2* i i=i-1

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 2. S se afieze primele n numere naturale pare n ordine invers, unde n este dat de utilizator. a) Definirea datelor de intrare/ieire s Date de intrare : n start c

pseudocod
program n_numere citete n afieaz n pentru i = ( n-1, 0 ) execut m=2*i afieaz m sfrit pentru sfrit suma

h e m a l o g i c

citete n afieaz

i = n-1

i[0,n-1] ? NU
stop

DA
m=2*i afieaz m

i=i-1

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 3. S se determine : a) Definirea datelor de intrare/ieire Date de intrare : n Date de ieire: S b) Modelul matematic: S = 13 + 23 + 33 + ... + n3

S i3
i 1

start citete n afieaz

schema logic

s=0 i=1

pseudocod
program suma citete n afieaz n s=0 pentru i = ( 1, n ) execut s=s+i*i*i sfrit pentru afieaz s sfrit suma

i<=n ? NU

DA
s=s+i*i*i i=i+1

afiare s

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

instruciuni
citete n afieaz n s=0 instruciune repetitiv i=1 i <= n ? NU DA

pas 1 3 3 s=0 i=1 1 <= 3 ? s=0+13=1 i=1+1=2

pas 2

pas 3

pas 4

2 <= 3 ? s=1+23=9 i=2+1=3

3 <= 3 ? s=9+27=36 i=3+1=4

4 <= 3 ?

s=s+i*i*i i=i+1

afieaz s

36 STOP

STOP

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 4. S se determine valoarea expresiei: a) Definirea datelor de intrare/ieire Date de intrare : n Date de ieire: S
start citete n afieaz n si = 0 i=1

S i j 2
i 1 j 1

b) Modelul matematic:

S i j 2
i 1 j 1

pseudocod
program suma_1 citete n afieaz n si = 0 pentru i = ( 1, n ) execut sj = 0 pentru j = ( 1, i ) execut sj = sj + j * j sfrit pentru si = si + i * sj sfrit pentru afieaz si sfrit suma_1

i<n ?

DA
sj = 0 j=1

NU

j<i ?

DA
sj = sj + j * j j=j+1

NU

si = si + i * sj j=j+1

afieaz si
stop

schema logic

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Exemplul 5. S se afieze toate numerele naturale multiplu de m i mai mici dect n. Exemplul 6. S se afieze primele m puteri ale lui 2. Exemplul 7. S se calculeze suma cifrelor unui numr m dat de utilizator. Exemplul 8. S se tabeleze funcia f(x)=2x2+x-6, pentru x [xmin,xmax], unde xmin, xmax i pasul sunt date de utilizator. Exemplul 9. S se scrie un algoritm care calculeaz i afieaz suma numerelor pozitive introduse de la tastatur. Programul se oprete prin introducerea unui numr negativ.

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

LABORATOR
ALGORITMI
1. Definiia algoritmilor. Reprezentarea algoritmilor. Clasificare. 2. Algoritmi secveniali. 3. Algoritmi ramificai (de decizie). 4. Algoritmi repetitivi. 5. Algoritmi pentru prelucrarea tablourilor de date.

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Prelucrarea irurilor unidimensionale (vectori) Ex1. S se citeasc de la tastatur i s se afieze un vector format din n elemente: a) Definirea datelor de intrare/ieire Date de intrare : n dimensiunea vectorului; v [ ] - vectorul start Date de ieire: v [ ] - vectorul citete n

pseudocod
program vector citete n afieaz n pentru i = ( 0, n-1 ) execut citete v[i] sfrit pentru pentru i = ( 0, n-1 ) execut afieaz v[i] sfrit pentru sfrit vector

afieaz n

schema logic

i=0

i[0,n-1] ?

DA

NU

citete v[i]
i=i+1

i=0

i[0,n-1] ?

DA

NU

afieaz v[i] i=i+1

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Ex2. S se initializeze automat i s se afieze un vector format din n elemente: a) Definirea datelor de intrare/ieire Date de intrare : n dimensiunea vectorului; v [ ] - vectorul start Date de ieire: v [ ] - vectorul citete n

pseudocod
program vector citete n afieaz n pentru i = ( 0, n-1 ) execut v[i] = i; sau v[i] = 3; sfrit pentru pentru i = ( 0, n-1 ) execut afieaz v[i] sfrit pentru sfrit vector

afieaz n

schema logic

i=0

i[0,n-1] ?

DA
v[i] = i;
i=i+1

NU

i=0

i[0,n-1] ?

DA

NU

afieaz v[i] i=i+1

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Ex3. S se citeasca de la tastatura un vector format din n elemente si sa se afiseje suma valorilor elementelor din care este format.
start

pseudocod
program vector citete n afieaz n sum=0; pentru i = ( 0, n-1 ) execut citeste [vi] sfrit pentru pentru i = ( 0, n-1 ) execut sum = sum+v[i]; sfrit pentru afieaz sum; sfrit vector

citete n afieaz n i=0

schema logic

i[0,n-1] ?

DA

NU

citeste v[i] i=i+1

i=0

i[0,n-1] ?

DA

NU

sum=sum+v[i] i=i+1

afiseaza sum
stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Ex4. S se citeasc un vector de la tastatur i s se afieze elementele pare ale vectorului: start
citete n

pseudocod
program vector citete n afieaz n pentru i = ( 0, n-1 ) execut citete v[i] sfrit pentru pentru i = ( 0, n-1 ) execut dac ( ( v[i] mod 2 ) == 0 ) atunci afieaz v[i] sfrit dac sfrit pentru sfrit vector

afieaz n i=0

schema logic
DA

i[0,n-1] ?

NU

citete v[i] i=i+1

i=0

i[0,n-1] ?

DA
(v[i] mod 2) ==0

NU

DA
afieaz v[i]

i=i+1

stop

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Ex5. S se citeasc un vector de la tastatur i s se afieze valoarea maxima stocata in elementele acestuia:

pseudocod

program vector variabile: i, n, aux1; vectorul: v[30]; citete n afieaz n pentru i = ( 0, n-1 ) execut citete v[i] sfrit pentru pentru i = ( 0, n-2 ) execut dac ( v[i] >= v[i+1]) atunci dac (v[i] >= aux1) atunci aux1 = v[i]; altfel aux1 = aux1; altfel dac (v[i+1] >= aux1) atunci aux1 = v[i+1]; altfel aux1 = aux1; sfrit pentru afisare aux1; sfrit vector

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Ex6. S se ordoneze crescator un vector citit de la tastatura:

cdamian@ee.tuiasi.ro

Programarea Calculatoarelor i Limbaje de Programare I

www.infopuc.ro

Ex7. S se citeasca un vector de la tastatur i s se afieze elementele impare ntre doua limite (L_inferioar si L_superioar). Ex8. S se citeasca un vector de la tastatur i s se afieze valoarea minim stocat n elementele acestuia, numarul elementului si adresa lui. Ex9. S se citeasca un vector de la tastatur prin alocare dinamica a memoriei. Acesta va initializa un al doilea vector astfel nct valoarea primului element din primul vector se va gasi ca valoare a ultimului element din cel de-al doilea vector (ex: v1[0] -> v2[n-1]). Ex10. S se ordoneze descrescator un vector citit de la tastatura.

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