0127 - Prima cifra

From Bitnami MediaWiki
Revision as of 22:20, 15 May 2023 by Petras.du.ioana (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

sursa:[1]

Cerinţa[edit | edit source]

Se dă un număr natural, apoi acel numar de numere naturale. Să se calculeze suma obținută prin adunarea primei cifre numerelor citite.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul, iar apoi acel numar de numere naturale, puse pe randuri diferite.

Date de ieşire[edit | edit source]

Programul afișează pe ecran suma obținută prin adunarea primei cifre a numerelor citite.

Restricții și precizări[edit | edit source]

  • 0 < numar < 1000
  • numerele citite vor fi mai mici decât 2.000.000

Exemplu[edit | edit source]

Intrare
5
100 212 3 45 5021
Ieșire
15

Explicație[edit | edit source]

S-au citit 5 numere. Trebuie adunate prima cifra a fiecarui numar, iar suma lor este 1+2+3+4+5=15.

Rezolvare[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line>

def citeste_numar_numere():

   """
   Funcție pentru citirea numărului de numere de la utilizator.
   Returnează numărul citit sau None în caz de eroare.
   """
   try:
       numar = int(input("Introduceți numărul de numere: "))
       if numar <= 0:
           print("Numărul de numere trebuie să fie un întreg pozitiv.")
           return None
       return numar
   except ValueError:
       print("Numărul de numere trebuie să fie un număr întreg.")
       return None


def citeste_numere(numar):

   """
   Funcție pentru citirea listei de numere de la utilizator.
   Primește numărul de numere și returnează lista de numere citite sau None în caz de eroare.
   """
   numere = []
   for i in range(numar):
       numar_curent = input("Introduceți numărul #" + str(i+1) + ": ")
       try:
           numar_curent = int(numar_curent)
           if numar_curent <= 0 or numar_curent > 999999999:
               print("Numărul trebuie să fie un întreg pozitiv cu cel mult 9 cifre.")
               return None
           else:
               numere.append(numar_curent)
       except ValueError:
           print("Datele de intrare trebuie să fie numere întregi.")
           return None
   return numere


def calculeaza_suma_primelor_cifre(numere):

   """
   Funcție pentru calcularea sumei primelor cifre ale numerelor dintr-o listă.
   Primește lista de numere și returnează suma primelor cifre.
   """
   suma = 0
   for numar in numere:
       suma += int(str(numar)[0])
   return suma


def main():

   numar = citeste_numar_numere()
   if numar is None:
       exit()
   numere = citeste_numere(numar)
   if numere is None:
       exit()
   suma = calculeaza_suma_primelor_cifre(numere)
   print("Datele au fost introduse corect.")
   print("Suma primelor cifre este:", suma)


if __name__ == "__main__":

   main()

</syntaxhighlight>

Rezolvare ver. 2[edit | edit source]

<syntaxhighlight lang="python" line>

  1. citim numărul de numere

try:

   numar = int(input("Introduceți numărul de numere: "))
   if numar <= 0:
       print("Numărul de numere trebuie să fie un întreg pozitiv.")
       exit()

except ValueError:

   print("Numărul de numere trebuie să fie un număr întreg.")
   exit()
  1. citim numerele și calculăm suma primelor cifre

suma = 0 for i in range(numar):

   numar_curent = input("Introduceți numărul #" + str(i+1) + ": ")
   try:
       numar_curent = int(numar_curent)
       if numar_curent <= 0 or numar_curent > 999999999:
           print("Numărul trebuie să fie un întreg pozitiv cu cel mult 9 cifre.")
           exit()
       else:
           suma += int(str(numar_curent)[0])
   except ValueError:
       print("Datele de intrare trebuie să fie numere întregi.")
       exit()
  1. afișăm suma

print("Datele au fost introduse corect.") print("Suma primelor cifre este:", suma)

</syntaxhighlight>