INTERSCHIMBAREA VALORILOR A DOUA
VARIABILE
Una dintre cele mai frecvente probleme care apare în programare
este necesitatea de a interschimba valorile a două variabile (a doua variabilă trebuie să
ajungă să conțină valoarea inițială a primei variabile, iar prima variabilă trebuie să ajungă
să conțină valoarea inițială a celei de-a doua variabile). Mulți încep cu soluția naivă
(presupunem că variabilele sunt a și
b): Destul de repede ne dăm seama că nu am realizat nicio
interschimbare și, la sfârșit, ambele variabile vor avea valoarea inițială a variabilei
a. Nu este greu să ne prindem și că avem nevoie de
o variabilă auxiliară pentru a realiza interschimbarea (așa cum, în principiu, avem nevoie
de un al treilea pahar dacă dorim să interschimbăm conținuturile a două pahare). Codul
nostru devine: Dar, oare chiar nu putem fără variabilă auxiliară? Uneori
putem! Cel mai simplu
caz este atunci când avem numere întregi. Să considerăm
următoarea secvență: | a =
b = a - b
a = a - b
Exemplu: Dacă a=37 și b= 82: a = a + b = 37 + 82 = 119 b = a - b = 119 - 82 = 37 a = a - b = 119 - 37 = 82 Deci variabilele și-au schimbat valorile. |
| | 1. Se citesc 4 numere . Să se afișeze numerele în
ordine
crescătoare . | Citeste n1, n2, n3, n4
Daca n1>n2 atunci { Ne asiguram ca relatia intre n1
si n2 va fi "<" }
x=n1
n1=n2
n2=x
Sfarsit Daca
Daca n1>n3 atunci { Ne asiguram ca relatia intre n1
si n3 va fi "<" }
x=n1
n1=n3
n3=x
Sfarsit Daca
Daca n1>n4 atunci { Ne asiguram ca relatia intre n1
si n4 va fi "<" }
x=n1
n1=n4
n4=x
Sfarsit Daca
Daca n2>n3 atunci { Ne asiguram ca relatia intre n2
si n3 va fi "<" }
x=n2
n2=n3
n3=x
Sfarsit Daca
Daca n2>n4 atunci { Ne asiguram ca relatia intre n2
si n4 va fi "<" }
x=n2
n2=n4
n4=x
Sfarsit Daca
Daca n3>n4 atunci { Ne asiguram ca relatia intre n3
si n4 va fi "<" }
x=n3
n3=n4
n4=x
Sfarsit Daca
Scrie n1, n2, n3, n4
| | 2. Se citesc 2 intervale de timp exprimate în ore ,
minute ,
secunde . Să se determine suma lor . | Citeste o1, m1, s1, o2, m2, s2
T=0
S=s1+s2
daca S>=60 atunci
T=1
S=S-60
Sfarsit Daca
M=m1+m2+T
Daca M>=60 atunci
T=1
M=M-60
Altfel
T=0
Sfarsit Daca
O=o1+o2+T
Scrie O, M, S
| | 3. Se citesc măsurile a două unghiuri exprimate în
grade ,
minute , secunde . Să se determine suma măsurilor
celor
doua unghiuri . | Citeste g1, m1, s1, g2, m2, s2
T=0
S=s1+s2
daca S>=60 atunci
T=1
S=S-60
Sfarsit Daca
M=m1+m2+T
Daca M>=60 atunci
T=1
M=M-60
Altfel
T=0
Sfarsit Daca
G=g1+g2+T
Scrie G, M, S
|
|