Se poate trece la capitolul următor cu tasta ► și se poate reveni la un capitol precedent cu tasta ◄

Elementul unui vector cu suma cifrelor minimă


<

C
a
p
i
t
o
l
u
l

a
n
t
e
r
i
o
r

<

Am primit o problemă interesantă care combină doi algorimi descriși anterior. Să vedem enunțul problemei:

Se dă un vector (1 < = n < = 100). Să se calculeze care element al vectorului are suma cifrelor mai mică (minimă).

De această dată vom începe direct cu rezolvarea:

Determinarea elementului unui vector cu suma cifrelor minimă în Pascal 

Cum avem două lucruri de făcut, determinarea sumei cifrelor unui număr și determinarea unui element din vector cu această proprietate, să începem cu prima problemă.

Pentru a ne simplifica munca, ne putem defini o funcție, în acest caz ea numindu-se suma_numar care acceptă numărul ca parametru. Într-o variabilă locală, temp, reținem suma cifrelor sale, care apoi o atribuim numelui funcției.

Pe urmă putem să ne ocupăm de problema în sine. Însă pentru a fi eficienți, putem determina elementul cu suma cifrelor minimă în timp ce citim numerele de la tastatură.

Pentru aceasta avem variabila pos care va ține minte poziția ultimului element cu suma cifrelor minimă din câte numere am introdus. Ea va avea valoarea 1 la început fiindcă presupunem că primul element va fi cel minim. De ce? În primul rând trebuie să începem de undeva. Iar prima poziție este o alegere bună. Iar dacă vectorul nostru are doar un element, soluția este imediat oferită.

Apoi începem să citim elementele. Dacă poziția la care suntem în ciclul FOR este a II-a, avem deja două numere de comparat. Cele de pe poziția 1 si 2. Aceasta explică prima parte a condiției instrucțiunii IF. Iar a doua parte pur și simplu compară elementul de pe poziția curentă cu ultimul element cu suma cifrelor minimă.

Din această problemă putem foarte ușor obține varianta inversă, determinarea elementului a cărui suma a cifrelor este cea mai mare. Pur și simplu înlocuim semnul mai mic cu... mai mare.


>

C
a
p
i
t
o
l
u
l

u
r
m
ă
t
o
r

>

Ți-a fost de ajutor ce am scris aici?
Hei, mersi de răspuns.