1582 - Max Min: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
No edit summary
Line 1: Line 1:
print("Datele sunt introduse corect.")
 
== Cerinţa ==
== Cerinţa ==
 
Se citesc de la tastatură n numere naturale. Să se determine numărul a cărui sumă a cifrelor este cea mai mare, respectiv cea mai mică.


== Date de intrare ==
== Date de intrare ==
 
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.


== Date de ieşire ==
== Date de ieşire ==
 
Minimul va fi afișat pe primul rând și maximul pe al doilea rând.


== Restricții și precizări ==
== Restricții și precizări ==
*  
* 1 ≤ n ≤ 1000
* cele n numere citite sunt mai mici decât 2.000.000.000
* dacă există mai multe numere cu aceeași sumă minimă/maximă se va afișa primul găsit


== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
: 12
: 5
: 23
: 145
: 225
: 198
: 326
: 874
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: 225
: 35
: 874
 
== Explicație ==
145 -> 1+4+5=10
225 -> 2+2+5=9 (minimul)
198 -> 1+9+8=18
326 -> 3+2+6=11
874 -> 8+7+4=19 (maximul)


== Rezolvare ==
== Rezolvare ==

Revision as of 19:39, 2 April 2023

Cerinţa

Se citesc de la tastatură n numere naturale. Să se determine numărul a cărui sumă a cifrelor este cea mai mare, respectiv cea mai mică.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieşire

Minimul va fi afișat pe primul rând și maximul pe al doilea rând.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • cele n numere citite sunt mai mici decât 2.000.000.000
  • dacă există mai multe numere cu aceeași sumă minimă/maximă se va afișa primul găsit

Exemplu

Intrare
5
145
225
198
326
874
Ieșire
225
874

Explicație

145 -> 1+4+5=10 225 -> 2+2+5=9 (minimul) 198 -> 1+9+8=18 326 -> 3+2+6=11 874 -> 8+7+4=19 (maximul)

Rezolvare

<syntaxhighlight lang="python" line>

  1. citirea numarului de la tastatura

while True:

   try:
       nr_numere = int(input("Introduceți numărul de numere naturale: "))
       if nr_numere <= 0:
           raise ValueError("Introduceți un număr natural nenul.")
       break
   except ValueError as e:
       print(f"Eroare: {e}")
  1. initializarea valorilor pentru suma maxima si minima

max_sum = float('-inf') min_sum = float('inf') numar_max = None numar_min = None

  1. iteram de nr_numere ori pentru citirea numerelor si determinarea sumei lor

for i in range(nr_numere):

   while True:
       try:
           numar = int(input(f"Introduceți numărul {i + 1}: "))
           if numar < 0:
               raise ValueError("Introduceți un număr natural pozitiv.")
           break
       except ValueError as e:
           print(f"Eroare: {e}")
   # calculam suma cifrelor numarului si verificam daca aceasta este maxima sau minima
   suma_cifre = 0
   copie_numar = numar
   while copie_numar:
       suma_cifre += copie_numar % 10
       copie_numar //= 10
   if suma_cifre > max_sum:
       max_sum = suma_cifre
       numar_max = numar
   if suma_cifre < min_sum:
       min_sum = suma_cifre
       numar_min = numar
  1. afisam rezultatele

print("Datele sunt introduse corect.") print(f"Numărul cu suma cifrelor maximă este {numar_max} și suma cifrelor sale este {max_sum}.") print(f"Numărul cu suma cifrelor minimă este {numar_min} și suma cifrelor sale este {min_sum}.")

</syntaxhighlight>