Sunteți pe pagina 1din 4

Algoritmi si structuri de date (4-5.10.

2012) Informatica Pitesti, anul 1

ASD_L01

ALGORITMI FUNDAMENTALI Algoritmi liniari Definiie: Algoritmii care pot fi descrii folosind numai comenzi/instruciuni de citire (n pseudocod: citeste), scriere (n pseudocod: scrie) i atribuire (n pseudocod: ) se numesc algoritmi liniari.

Exemple de algoritmi liniari: R1. Enunul problemei: S se descrie un algoritm pentru determinarea valorii unui depozit bancar (cu termen la 1 an i cu capitalizarea dobnzii) dup 2 ani, tiind valoarea iniial i dobnda anual. Metoda de rezolvare: De exemplu, pentru o valoare iniial de 500 Ron i dobnd anual de 10%, dup primul an depozitul va avea valoarea 500+10%*500 = 550 Ron, iar dup al doilea an depozitul va avea suma de 550+10%*550 = 605 Ron. Putem nota cu v0 valoarea iniial a depozitului i cu dob valoarea dobnzii (n exemplul nostru 10 (ca sa nu introducem 0.1), subnelegndu-se 10%). Descrierea algoritmului n pseudocod:
citeste v0,dob v1 v0 + v0*dob/100 v2 v1 + v1*dob/100 scrie v2 *de exemplu, 500, respectiv 10 *valoare depozit dupa un an *valoare depozit dupa al doilea an *data de ieire doar v2

Dac se dorea se putea afia i valoarea depozitului dup primul an, cci valoarea sa era reinut n variabila v1. Se poate optimiza acest algoritm, pentru a nu folosi dou variabile diferite pentru memorarea valorilor depozitului dup primul an, respectiv al doilea an.
citeste v0,dob v v0 + v0*dob/100 v v + v*dob/100 scrie v *de exemplu, 500, respectiv 10 *valoare depozit dupa un an *valoare depozit dupa al doilea an *valoare depozit dupa al doilea an

A treia instruciune evalueaz membrul drept (vechea valoare a variabilei v, adic cea de dup primul an, plus aceasta nmulit cu dob/100), iar noua valoare a variabilei v va fi exact rezultatul acestui membru drept. R2. Transformarea unui moment de timp din ore-min-sec n secunde i invers. - rezolvat la tabl R3. Enunul problemei: S se descrie un algoritm pentru determinarea ariei unui ptrat, cunoscnd lungimea laturii sale. Metoda de rezolvare: Algoritmul const n citirea de la tastatur a lungimii laturii ptratului i apoi determinarea i afiarea ariei acestuia (aria = latura2). De exemplu, pentru un ptrat cu latura de 4 (uniti de msur), aria este 16. Descrierea algoritmului n pseudocod:
citete latura aria latura2
scrie aria

Algoritmi si structuri de date (4-5.10.2012) Informatica Pitesti, anul 1

ASD_L01

R4. Enunul problemei: S se descrie un algoritm care s converteasc o temperatur din grade Celsius n echivalentul ei n grade Farenheit. Metoda de rezolvare: Formula de echivalen ntre grade Celsius i grade Farenheit este 9 F = 32 + C. 5 Astfel, algoritmul se reduce la citirea valorii temperaturii n grade Celsius i apoi afiarea expresiei din dreapta semnului egal de mai sus. Descrierea algoritmului n pseudocod:
citete gr_C gr_F 32+
scrie gr_F

9 gr_C 5

R5. Enunul problemei: S se descrie un algoritm pentru determinarea mediei aritmetice, mediei geometrice i a mediei armonice a dou valori reale strict pozitive date. Metoda de rezolvare: Dac notm cele dou valori strict pozitive cu a, respectiv b, atunci: a+b 2 ma = , m g = ab i marm = . 1 2 +1
a b

Descrierea algoritmului n pseudocod:


citeste a,b

ma

a+b 2 m g ab marm 2
1+1 a b

*presupunem c ambele sunt strict pozitive

*media aritmetic *media geometric *media armonic *datele de ieire

scrie ma, mg, marm

R6. Enunul problemei: S se calculeze aria unui triunghi cunoscnd lungimile laturilor sale a, b i c. Metoda de rezolvare: Se folosete formula lui Heron: aria = a+b+c p este semiperimetrul triunghiului, adic p = . 2 Descrierea algoritmului n pseudocod: a+b+c p 2 aria p( p a)( p b)( p c)
scrie aria

p( p a)( p b)( p c) , unde

citete a,b,c

*se citesc datele de intrare


*se calculeaza semiperimetrul

*se calculeaza aria triunghiului


*se afiseaza valoarea variabilei aria

Algoritmi si structuri de date (4-5.10.2012) Informatica Pitesti, anul 1

ASD_L01

R7. Enunul problemei: S se scrie un algoritm pentru determinarea ariei unei elipsei, cunoscnd lungimile semiaxelor sale. Metoda de rezolvare: Aria unei elipse este A = ab, unde a i b sunt lungimile semiaxelor elipsei. Putem evita folosirea variabilei aria prin afiarea direct a expresiei ariei elipsei. Descrierea algoritmului n pseudocod:
citete a,b aria ab scrie aria

R8. Enunul problemei: S se descrie un algoritm pentru determinarea ariei unui triunghi, cunosc lungimile a dou laturi i unghiul dintre acestea. Metoda de rezolvare: Reamintim c aria unui triunghi n funcie de dou laturi i unghiul dintre acestea este ac sin B A= . 2 Descrierea algoritmului n pseudocod:
citete a,c,B aria

ac sin B 2

scrie aria

Tema 01 termen maxim 2 sptmni (se va transmite prin e-mail ntr-un fiier electronic sau personal pe foaie scris de mn sau listat cel trziu 19.10.2011): 1) Scriei n pseudocod (eventual i n C/C++) algoritmul pentru determinarea TVA-ului unui produs (TVA=24%*valoare_produs), cunoscnd valoarea produsului. De exemplu, pentru un produs n valoare de 1000 lei, TVA-ul este de 240lei. 2) Scriei n pseudocod (eventual i n C/C++) algoritmul pentru realizarea unui schimb valutar din euro n lei, tiind cursul Euro i suma n euro. De exemplu, pentru o sum de 100 Euro i rata de schimb 1Euro = 4,5 lei, dup schimbul valutar al sumei respective se obine 100*4,5 = 450lei. 3) Scriei n pseudocod (eventual i n C/C++) algoritmul pentru realizarea unui schimb valutar din lei n euro, tiind cursul Euro (de ex. 1Euro = 4,2Ron) i suma n lei. De exemplu, pentru o sum de 100 lei i rata de schimb 1Euro = 4,5 lei, dup schimbul valutar al sumei respective se obine 100 / 4,5 = 22,2 Euro. 4) Scriei n pseudocod (eventual i n C/C++) algoritmul pentru calculul ariei unui triunghi, cnd se cunoate o baz a triunghiului i nlimea pe aceast baz (aria = baza*inaltimea/2). De exemplu, pentru baza = 3, inaltimea=2 se obine valoarea ariei: 3 * 2 / 2 = 3. 5) Scriei n pseudocod (eventual i n C/C++) algoritmul pentru conversia unui unghi din grade n radiani. De exemplu, pentru x = 0 grade, valoarea n radiani este tot 0, iar pentru x = 180 grade, valoarea n radiani este 3.14. x _ grade x _ radiani = => x_radiani = x_grade / 180 180 6) Scriei n pseudocod (eventual i n C/C++) algoritmul pentru calculul ariei i lungimii unui cerc cnd se cunoate raza acestuia (aria = *raza2, lungime = 2**raza). De exemplu, pentru raza = 1 se obine aria = 3.14, iar lungime = 6.28. 3

Algoritmi si structuri de date (4-5.10.2012) Informatica Pitesti, anul 1

ASD_L01

(tem suplimentar mai dificil) 1. La ferma de gini este democraie. Fiecare gin primete exact acelai numr de boabe de porumb. Cele care nu pot fi mprite vor fi primite de curcan. S se spun cine a primit mai multe boabe i cu ct; n caz de egalitate, se va afisa numrul de boabe primite i cuvntul "egalitate". Datele se vor citi n ordinea: numrul de gini, iar dup aceea numrul de boabe de porumb. De exemplu, pt 100 i 4050 => curcanul are mai mult cu 10 boabe. 2. ntr-o tabr, baieii sunt cazai cte 4 ntr-o csu, n ordinea sosirii. Ionel a sosit al nlea. n a cta csua se va afla? De exemplu, pentru n = 35 se va afia csua 9 3. "M iubete un pic, mult, cu pasiune, la nebunie, deloc, un pic, ...". Rupnd petalele unei margarete cu x petale, el(ea) m iubete ... De exemplu, pentru x = 10 date de ieire:...de loc.