0364 - Cifre 1
sursa: [1]
Cerinţa[edit | edit source]
Se dau un numar de numere naturale. Determinați numărul pentru care prima cifră este maximă.
Date de intrare[edit | edit source]
Programul citește de la tastatură un număr, iar apoi acel numar de numere naturale, separate prin spaţii.
Date de ieşire[edit | edit source]
Programul afișează pe ecran numărul cerut
Restricții și precizări[edit | edit source]
- 1 ≤ numar ≤ 1000
- cele n numere citite vor avea cel mult 9 cifre
- dacă există mai multe numere pentru care prima cifră este maximă, se va determina cel mai mare dintre acestea
Exemplu[edit | edit source]
- Intrare
- 5
- 2467 645 687 59878 125
- Ieșire
- Datele sunt introduse corect.
- 687
Explicatie[edit | edit source]
Există două numere pentru care prima cifră este maximă. Dintre acestea, cel mai mare este 687.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_numar_intreg(mesaj):
while True: try: numar = int(input(mesaj)) return numar except ValueError: print("Introduceți un număr valid.")
def determina_numar_maxim(n):
max_num = -1 max_first_digit = -1
for i in range(n): while True: num = citeste_numar_intreg(f"Introduceți numărul {i + 1}: ") if num < 10: print("Numărul trebuie să fie natural și să aibă cel puțin două cifre.") continue break
first_digit = int(str(num)[0])
if first_digit > max_first_digit: max_first_digit = first_digit max_num = num elif first_digit == max_first_digit and num > max_num: max_num = num
return max_num
if __name__ == "__main__":
while True: n = citeste_numar_intreg("Introduceți numărul de numere: ") if n < 1 or n > 1000: print("Numărul de numere trebuie să fie un număr natural între 1 și 1000.") continue break
numar_maxim = determina_numar_maxim(n) print("Datele sunt introduse corect.") print(f"Numărul cu prima cifră maximă este {numar_maxim}.")
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
while True:
try: # Citim numărul de numere de la tastatură n = int(input("Introduceți numărul de numere: ")) # Verificăm dacă numărul este între 1 și 1000 if n < 1 or n > 1000: print("Numărul de numere trebuie să fie un număr natural între 1 și 1000.") continue # Dacă numărul este corect, ieșim din bucla while break except ValueError: # Dacă utilizatorul introduce o valoare care nu poate fi convertită într-un număr întreg, # afișăm un mesaj de eroare și reluăm citirea print("Introduceți un număr valid.")
- Inițializăm variabilele max_num și max_first_digit cu valori minime
max_num = -1 max_first_digit = -1
- Citim cele n numere de la tastatură și determinăm numărul cu prima cifră maximă
for i in range(n):
while True: try: # Citim numărul i de la tastatură num = int(input(f"Introduceți numărul {i + 1}: ")) # Verificăm dacă numărul are cel puțin două cifre if num < 10: print("Numărul trebuie să fie natural și să aibă cel puțin două cifre.") continue # Dacă numărul este corect, ieșim din bucla while break except ValueError: # Dacă utilizatorul introduce o valoare care nu poate fi convertită într-un număr întreg, # afișăm un mesaj de eroare și reluăm citirea print("Introduceți un număr valid.")
# Determinăm prima cifră a numărului first_digit = int(str(num)[0])
# Verificăm dacă prima cifră a numărului este mai mare decât oricare alta primă cifră întâlnită până acum if first_digit > max_first_digit: # Dacă da, actualizăm variabilele max_num și max_first_digit cu valorile corespunzătoare max_first_digit = first_digit max_num = num # Dacă prima cifră a numărului este egală cu cea mai mare primă cifră întâlnită până acum, # verificăm dacă numărul este mai mare decât cel mai mare număr cu prima cifră maximă întâlnit până acum elif first_digit == max_first_digit and num > max_num: # Dacă da, actualizăm variabila max_num cu noul număr max_num = num
print("Datele sunt introduse corect.")
- Afisam rezultatul
print(f"Numărul cu prima cifră maximă este {max_num}.")
</syntaxhighlight>