Sunteți pe pagina 1din 0

Maxim i minim

Probleme de extrem
Probleme propuse
Soluiile problemelor propuse
Capitolul
5

5.1. Probleme de extrem
n multe probleme practice ni se cere s determinm maximul sau minimul dintre mai
multe obiecte. Care este cel mai scund elev din clas? Care este cel mai mare elefant al
grdinii zoologice? Care dintre florile de pe verand are cel mai mare diametru?
Toate aceste probleme au n comun un set de valori de intrare care vor fi supuse
unor comparaii, avnd ca scop determinarea acelui obiect pentru care mrimea de
comparat are valoare maxim/minim.
Se impune ns o precizare: Dintre o cirea i o nuc, care este mai mare? Dac
v-ai grbit s rspundei, probabil c ai greit afirmnd c o nuc este mai mare dect
o cirea. Rspunsul este altul. n problemele practice vom compara mrimi de acelai
tip sau obiecte de acelai tip. Cu siguran, cutnd ntr-un sac de nuci vom gsi o
nuc mai mic dect o cirea normal. Dar nu ne vom pierde timpul cu rspunsul la
asemenea probleme.
ntotdeauna, n problemele de extrem vom avea dou sau mai multe valori, de ace-
lai tip, pentru care va avea sens s efectum comparaii i pentru care vom putea n-
totdeauna s afirmm care dintre cele dou obiecte ale unei comparaii este mai mare
sau mai mic.
Am anticipat deja rspunsul la problema cum comparm mai multe obiecte? Evi-
dent, pe rnd, dou cte dou.

S rezolvm acum cteva probleme reprezentative pentru aceast categorie de apli-
caii practice.
5. Minim i maxim 53

5.2. Probleme propuse

5.2.1. Lungimea i limea unui dreptunghi
Cunoatei lungimile a dou laturi adiacente ale unui dreptunghi. Determinai care este
valoarea lungimii i care este valoarea limii.

Date de intrare
Se dau dou valori a i b, numere reale care se introduc de la tastatur.

Date de ieire
Se vor afia dou valori reale corespunztoare lungimii i respectiv limii dreptun-
ghiului.

Restricii i precizri
Datele de intrare sunt ntotdeauna corecte.

Exemple
Intrare
a=2 b=5
a=4 b=2
Ieire
5 2
4 2
Explicaie
Lungimea=5; Limea=2
Lungimea=4; Limea=2

5.2.2. Cel mai tnr dintre prietenii mei
Cunoatei vrstele a trei dintre prietenii votri. Trebuie s determinai vrsta celui mai
tnr dintre cei trei.

Date de intrare
Se dau trei valori ntregi, a, b i c, reprezentnd vrstele celor trei copii, citite de la
tastatur.

Date de ieire
Se va afia cea mai mic dintre cele trei vrste.

Restricii i precizri
1 a, b, c 30

Exemple
Intrare
a=5 b=7 c=3
Ieire
3
Explicaie
Cel mai tnr dintre prieteni are vrsta de 3 ani.

54 5. Minim i maxim

5.2.3. Limite de nlime
Se cunosc nlimile celor n sportivi dintr-un lot. Determinai limitele de nlime ntre
care se afl aceti sportivi.

Date de intrare
Se d n, numr natural i valorile nlimilor celor n sportivi, n cm.

Date de ieire
Se vor afia dou numere ntregi, reprezentnd cea mai mic i cea mai mare nlime.

Restricii i precizri
1 n 1000
Datele de intrare sunt corecte.

Exemple
Intrare
n=7
140 155 132 167 163 124 151
Ieire
132..167

Explicaie
nlimile sportivilor se afl
ntre 132 cm i 167 cm.

5.2.4. Clasament
La un concurs particip n sportivi. Se cunosc rezultatele fiecrui sportiv. S se afieze
cele mai bune trei rezultate, n ordine descresctoare a performanei.

Date de intrare
Se va citi numrul de sportivi n, apoi se vor citi pe rnd rezultatele sportivilor.

Date de ieire
Se vor afia cele mai bune trei performane, n ordine descresctoare.

Restricii i precizri
3 n 100
Rezultatele sportivilor sunt reprezentate de numere naturale mai mici dect 10000.

Exemple
Intrare
n=5
156 187 23 97 86
Ieire
187 156 97



5. Minim i maxim 55

5.3. Soluiile problemelor

5.3.1. Lungimea i limea unui dreptunghi
Problema are ca date de intrare dou valori reale. Una dintre ele este lungimea drept-
unghiului, iar cealalt limea. Lungimea dreptunghiului este valoarea mai mare dintre
cele dou, iar limea este valoarea mai mic. Prin urmare, problema se reduce la a de-
termina maximul i minimul dintre cele dou valori.
Vom explicita formula utilizat pentru determinarea maximului:
lung (a + b + a b ) / 2
Vom arta c astfel se determin n mod corect care dintre cele dou valori este
lungimea. Avnd n vedere c a i b reprezint lungimea, respectiv limea dreptun-
ghiului, avem:
a + b = lung + lat. (1)
Pe de alt parte a b = lung lat. (2)
n partea dreapt nu este nevoie de valoare absolut a diferenei, deoarece lungimea
dreptunghiului este mai mare dect limea. Prin urmare, nlocuind valorile din (1) i
(2) n expresia din instruciunea de atribuire se constat imediat corectitudinea calcu-
lului:
lung + lat + lung lat = 2*lung.

Evident, problema se poate rezolva i printr-o decizie simpl.

5.3.2. Cel mai tnr dintre prietenii mei
Practic, problema cere ca, date fiind trei valori ntregi, s determinai valoarea cea mai
mic dintre cele trei.
Dup citirea datelor de la tastatur vom proceda dup cum urmeaz:
1. Presupunem c valoarea minim este valoarea a;
2. Apoi comparm valoarea b cu minimul reinut n variabila min i actualizm mini-
mul la nevoie;
3. Procedm la fel pentru comparaia cu variabila c;
4. Afim valoarea reinut de variabila min.

5.3.3. Limite de nlime
Problema solicit determinarea maximului i a minimului dintre cele n valori citite de
la tastatur.
Maximul i minimul se iniializeaz cu dou valori potrivite pentru a fi siguri c
printre datele citite vor exista valori pentru care se va face actualizarea valorilor extre-
me.
Determinarea maximului i a minimului se face n paralel cu citirea celor n valori.
56 5. Minim i maxim

Dup citirea unei valori, aceasta se compar cu maximul, respectiv minimul curent i
se hotrte dac este necesar o actualizare a acestei valori.
La sfrit se afieaz minimul i respectiv maximul determinate la ultima compara-
ie.

5.3.4. Clasament
Vom utiliza trei variabile r1, r2, r3 care vor reine n ordine descresctoare cele mai
bune trei performane ale momentului.
Pe rnd, n variabila r se citesc rezultatele sportivilor. Dac rezultatul unui sportiv
este mai bun dect rezultatul reinut n r3 atunci se reine acest rezultat n clasamentul
provizoriu, n locul rezultatului cel mai slab i apoi se rearanjeaz clasamentul celor
mai bune trei rezultate.
La sfrit se afieaz valorile reinute de cele trei variabile.

Algoritm Clasament:
citete n
pentru i=1,n execut: { citim un rezultat i rearanjm clasamentul }
citete r
dac r > r3 atunci
r3 r
dac r3 > r2 atunci
r r3
r3 r2
r2 r
sfrit dac
dac r2 > r1 atunci
r r2
r2 r1
r1 r
sfrit dac
sfrit pentru
scrie r1, r2, r3 { afiarea rezultatelor }
sfrit algoritm

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