0171 - Prima Cifra Minima: Difference between revisions
Andor Giulia (talk | contribs) Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/171/primaciframinima] == Cerință == Să se scrie un program care citește un șir de n numere naturale şi determină numărul din șir care are prima cifră minimă. Dacă există mai multe numere cu prima cifră minimă, se va determina cel mai mare dintre acestea. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale. == Date de ieșire == Programul afișează pe ecran număru... |
Andor Giulia (talk | contribs) No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 5: | Line 5: | ||
Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale. | Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale. | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul afișează pe ecran numărul cerut. | Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.".Programul afișează pe ecran numărul cerut. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.". | ||
== Restricții și precizări == | == Restricții și precizări == | ||
* 1 ≤ '''n''' ≤ 10000 | * 1 ≤ '''n''' ≤ 10000 | ||
* cele '''n''' numere citite vor fi mai mici decât '''2.000.000.000''' | * cele '''n''' numere citite vor fi mai mici decât '''2.000.000.000''' | ||
== Exemplu == | == Exemple == | ||
=== Exemplu 1 === | |||
; Intrare | ; Intrare | ||
: 5 | : 5 | ||
Line 15: | Line 16: | ||
; Ieșire | ; Ieșire | ||
: 165 | : 165 | ||
=== Exemplu 2 === | |||
; Intrare | |||
: 4 | |||
: 72 30 12 165 725 | |||
; Ieșire | |||
: 165 | |||
=== Exemplu 3 === | |||
; Intrare | |||
: 5 | |||
: 72 30 12 165 725 | |||
; Ieșire | |||
: 165 | |||
== Rezolvare == | |||
<syntaxhighlight lang="python" line="1"> | |||
def citeste_n(): | |||
while True: | |||
try: | |||
n = int(input("Introduceti numarul de valori: ")) | |||
if n >= 1 and n <= 1000: | |||
print("Datele sunt corecte.") | |||
return n | |||
else: | |||
print("Datele nu sunt conform restricțiilor impuse.") | |||
except ValueError: | |||
print("Trebuie introduse doar numere intregi.") | |||
def citeste_valori(n): | |||
valori = [] | |||
for i in range(n): | |||
while True: | |||
try: | |||
valoare = int(input("Introduceti o valoare: ")) | |||
if valoare > 0 and valoare <= 2000000000 : | |||
print("Datele sunt corecte.") | |||
valori.append(valoare) | |||
break | |||
else: | |||
print("Datele nu sunt conform restricțiilor impuse.") | |||
except ValueError: | |||
print("Trebuie introduse doar valori naturale cu mai putin de 9 cifre.") | |||
return valori | |||
def primacif(n): | |||
while n >= 10: | |||
n = n // 10 | |||
return n | |||
def cifra_minim(valori): | |||
mini = 10 | |||
max_primacif = 0 | |||
for valoare in valori: | |||
primacifra = primacif(valoare) | |||
if primacifra < mini: | |||
mini = primacifra | |||
max_primacif = valoare | |||
elif primacifra == mini and valoare > max_primacif: | |||
max_primacif = valoare | |||
return max_primacif | |||
if _name_ == '_main_': | |||
n = citeste_n() | |||
valori = citeste_valori(n) | |||
min = cifra_minim(valori) | |||
print("Numarul cu prima cifra minima si maxim dintre acestea este:", min) | |||
</syntaxhighlight> | |||
== Explicați == | |||
Acest cod este o implementare a unui program care citeste un numar n si apoi citeste n valori de la utilizator, aplica anumite restricții asupra acestora și determină numărul cu prima cifră minimă și maximă dintre acestea. | |||
Funcția "citeste_n()" primește input de la utilizator pentru numărul de valori pe care utilizatorul dorește să le introducă. În timp ce utilizatorul nu introduce un număr valid (un întreg între 1 și 1000), programul afișează un mesaj corespunzător și cere din nou input. Dacă utilizatorul introduce un număr valid, funcția returnează acest număr. | |||
Funcția "citeste_valori(n)" primește numărul de valori introduse de utilizator și returnează o listă cu valorile introduse de utilizator. În timp ce utilizatorul introduce valorile, programul aplică restricții asupra acestora: valorile trebuie să fie numere întregi pozitive mai mici decât 2 miliarde. Dacă utilizatorul introduce o valoare invalidă, programul afișează un mesaj corespunzător și cere din nou input. | |||
Funcția "primacif(n)" primește un număr și returnează prima cifră a acestuia. | |||
Funcția "cifra_minim(valori)" primește o listă de valori și determină numărul cu prima cifră minimă și maximă dintre acestea. Pentru fiecare valoare din listă, programul determină prima cifră și verifică dacă aceasta este mai mică decât cifra minimă până în acel moment. Dacă aceasta este mai mică, numărul devine noul minim. Dacă este egală cu cifra minimă, programul verifică dacă numărul respectiv este mai mare decât numărul cu prima cifră minimă și maximă până în acel moment și, dacă da, numărul devine noul număr cu prima cifră minimă și maximă. La sfârșit, funcția returnează numărul cu prima cifră minimă și maximă. | |||
În programul principal, funcțiile "citeste_n()", "citeste_valori(n)" și "cifra_minim(valori)" sunt apelate în ordine pentru a citi valorile de la utilizator și a determina numărul cu prima cifră minimă și maximă. Acest număr este apoi afișat la consolă. |
Latest revision as of 18:14, 29 March 2023
Sursă: [1]
Cerință[edit | edit source]
Să se scrie un program care citește un șir de n numere naturale şi determină numărul din șir care are prima cifră minimă. Dacă există mai multe numere cu prima cifră minimă, se va determina cel mai mare dintre acestea.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.".Programul afișează pe ecran numărul cerut. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 10000
- cele n numere citite vor fi mai mici decât 2.000.000.000
Exemple[edit | edit source]
Exemplu 1[edit | edit source]
- Intrare
- 5
- 72 30 12 165 725
- Ieșire
- 165
Exemplu 2[edit | edit source]
- Intrare
- 4
- 72 30 12 165 725
- Ieșire
- 165
Exemplu 3[edit | edit source]
- Intrare
- 5
- 72 30 12 165 725
- Ieșire
- 165
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1"> def citeste_n():
while True: try: n = int(input("Introduceti numarul de valori: ")) if n >= 1 and n <= 1000: print("Datele sunt corecte.") return n else: print("Datele nu sunt conform restricțiilor impuse.") except ValueError: print("Trebuie introduse doar numere intregi.")
def citeste_valori(n):
valori = [] for i in range(n): while True: try: valoare = int(input("Introduceti o valoare: ")) if valoare > 0 and valoare <= 2000000000 : print("Datele sunt corecte.") valori.append(valoare) break else: print("Datele nu sunt conform restricțiilor impuse.") except ValueError: print("Trebuie introduse doar valori naturale cu mai putin de 9 cifre.")
return valori
def primacif(n):
while n >= 10: n = n // 10 return n
def cifra_minim(valori):
mini = 10 max_primacif = 0 for valoare in valori: primacifra = primacif(valoare) if primacifra < mini: mini = primacifra max_primacif = valoare elif primacifra == mini and valoare > max_primacif: max_primacif = valoare return max_primacif
if _name_ == '_main_':
n = citeste_n() valori = citeste_valori(n) min = cifra_minim(valori) print("Numarul cu prima cifra minima si maxim dintre acestea este:", min)
</syntaxhighlight>
Explicați[edit | edit source]
Acest cod este o implementare a unui program care citeste un numar n si apoi citeste n valori de la utilizator, aplica anumite restricții asupra acestora și determină numărul cu prima cifră minimă și maximă dintre acestea.
Funcția "citeste_n()" primește input de la utilizator pentru numărul de valori pe care utilizatorul dorește să le introducă. În timp ce utilizatorul nu introduce un număr valid (un întreg între 1 și 1000), programul afișează un mesaj corespunzător și cere din nou input. Dacă utilizatorul introduce un număr valid, funcția returnează acest număr.
Funcția "citeste_valori(n)" primește numărul de valori introduse de utilizator și returnează o listă cu valorile introduse de utilizator. În timp ce utilizatorul introduce valorile, programul aplică restricții asupra acestora: valorile trebuie să fie numere întregi pozitive mai mici decât 2 miliarde. Dacă utilizatorul introduce o valoare invalidă, programul afișează un mesaj corespunzător și cere din nou input.
Funcția "primacif(n)" primește un număr și returnează prima cifră a acestuia.
Funcția "cifra_minim(valori)" primește o listă de valori și determină numărul cu prima cifră minimă și maximă dintre acestea. Pentru fiecare valoare din listă, programul determină prima cifră și verifică dacă aceasta este mai mică decât cifra minimă până în acel moment. Dacă aceasta este mai mică, numărul devine noul minim. Dacă este egală cu cifra minimă, programul verifică dacă numărul respectiv este mai mare decât numărul cu prima cifră minimă și maximă până în acel moment și, dacă da, numărul devine noul număr cu prima cifră minimă și maximă. La sfârșit, funcția returnează numărul cu prima cifră minimă și maximă.
În programul principal, funcțiile "citeste_n()", "citeste_valori(n)" și "cifra_minim(valori)" sunt apelate în ordine pentru a citi valorile de la utilizator și a determina numărul cu prima cifră minimă și maximă. Acest număr este apoi afișat la consolă.