2694 - Min Max2: Difference between revisions
Pagină nouă: ==Cerință== Se dau '''2 numere naturale''' cu exact '''3 cifre''' fiecare, să se afișeze '''cel mai mare și cel mai mic''' număr de două cifre scris cu o cifră din '''primul''' număr și cu o cifră din '''al doilea'''. ==Date de intrare== Programul citește de la tastatură 2 numere separate prin spații. ==Date de ieșire== Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe e... |
Vardai Erwin (talk | contribs) |
||
Line 49: | Line 49: | ||
v1 = [0] * 4 | v1 = [0] * 4 | ||
p = p1 = 0 | p = p1 = 0 | ||
result = str(ma) + ' ' | |||
while a: | while a: | ||
v[p] = a % 10 | v[p] = a % 10 | ||
Line 69: | Line 69: | ||
mi = v1[i] | mi = v1[i] | ||
m = mi * 10 | m = mi * 10 | ||
result += str(m) | |||
else: | else: | ||
if min1 == 0 or min2 == 0: | if min1 == 0 or min2 == 0: | ||
if min1 > min2: | if min1 > min2: | ||
result += str(min1 * 10) | |||
else: | else: | ||
result += str(min2 * 10) | |||
else: | else: | ||
if min1 < min2: | if min1 < min2: | ||
result += str(min1 * 10 + min2) | |||
else: | else: | ||
result += str(min2 * 10 + min1) | |||
return result | |||
Line 88: | Line 89: | ||
if validare(a, b): | if validare(a, b): | ||
print("Datele de intrare corespund restricțiilor impuse.") | print("Datele de intrare corespund restricțiilor impuse.") | ||
result = minim_maxim2(a, b) | |||
print(result) | |||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 11:30, 30 April 2023
Cerință[edit | edit source]
Se dau 2 numere naturale cu exact 3 cifre fiecare, să se afișeze cel mai mare și cel mai mic număr de două cifre scris cu o cifră din primul număr și cu o cifră din al doilea.
Date de intrare[edit | edit source]
Programul citește de la tastatură 2 numere separate prin spații.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe ecran cel mai mare și cel mai mic număr de două cifre scris cu o cifră din primul număr și cu o cifră din al doilea în această ordine, separate prin spații.În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări[edit | edit source]
- 100 ≤ a ≤ b ≤ 999
Exemplul 1[edit | edit source]
- Intrare
- 123 912
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 93 11
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> def validare(a, b):
if 100 <= a <= b <= 999: return True return False
def maxi(n):
ma = 0 while n: if n % 10 > ma: ma = n % 10 n //= 10 return ma
def minim_maxim2(a, b):
max1 = maxi(a) max2 = maxi(b) if max1 > max2: ma = max1 * 10 + max2 else: ma = max2 * 10 + max1
v = [0] * 4 v1 = [0] * 4 p = p1 = 0 result = str(ma) + ' ' while a: v[p] = a % 10 p += 1 a //= 10 while b: v1[p1] = b % 10 p1 += 1 b //= 10 v = sorted(v[:p]) v1 = sorted(v1[:p1]) min1, min2 = v[0], v1[0] if v1[0] == 0 and v[0] == 0: mi = 10 for i in range(p): if v[i] < mi and v[i] != 0: mi = v[i] if v1[i] < mi and v1[i] != 0: mi = v1[i] m = mi * 10 result += str(m) else: if min1 == 0 or min2 == 0: if min1 > min2: result += str(min1 * 10) else: result += str(min2 * 10) else: if min1 < min2: result += str(min1 * 10 + min2) else: result += str(min2 * 10 + min1) return result
if __name__ == "__main__":
a, b = map(int, input().split())
if validare(a, b): print("Datele de intrare corespund restricțiilor impuse.") result = minim_maxim2(a, b) print(result) else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>
Explicatie[edit | edit source]
Acest cod este o implementare a unei funcții care primește două numere întregi a și b și determină o valoare maximă și o valoare minimă într-un anumit mod.
Funcția validare(a, b) verifică dacă valorile introduse pentru a și b sunt între 100 și 999, inclusiv, și returnează True dacă da, altfel returnează False.
Funcția maxi(n) primește un număr întreg n și determină cifra maximă din numărul respectiv. Se face acest lucru prin iterarea prin cifrele numărului (obținute prin împărțirea repetată la 10) și compararea fiecărei cifre cu valoarea maximă curentă.
Funcția minim_maxim2(a, b) calculează valoarea maximă și valoarea minimă într-un anumit mod. Mai întâi se calculează valoarea maximă (denumită ma) prin combinarea cifrei maxime din fiecare dintre cele două numere într-un singur număr. Apoi, se descompun numerele a și b în cifre și se ordonează cifrele crescător. Cifrele sunt stocate în listele v și v1. Valoarea minimă este apoi determinată ca fiind prima cifră din aceste liste. Dacă una dintre aceste cifre este 0, se caută cea mai mică cifră nenulă în cele două liste și se combină pentru a forma valoarea minimă. În cele din urmă, valoarea minimă și valoarea maximă sunt combinate pentru a forma valoarea finală.
În secțiunea if __name__ == "__main__": se primește intrarea de la utilizator pentru valorile a și b. Dacă valorile introduse sunt valide, se afișează un mesaj corespunzător și se apelează funcția minim_maxim2(a, b) pentru a determina valorile minime și maxime. Altfel, se afișează un mesaj de eroare.