0127 - Prima cifra: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
sursa:[https://www.pbinfo.ro/probleme/127/prima-cifra]
== Cerinţa ==
== Cerinţa ==
Se dă un număr natural, apoi acel numar de numere naturale. Să se calculeze suma obținută prin adunarea primei cifre numerelor citite.
Se dă un număr natural, apoi acel numar de numere naturale. Să se calculeze suma obținută prin adunarea primei cifre numerelor citite.
Line 9: Line 10:


== Restricții și precizări ==
== Restricții și precizări ==
* 0 < n < 1000
* 0 < numar < 1000
* numerele citite vor fi mai mici decât 2.000.000
* numerele citite vor fi mai mici decât 2.000.000


Line 23: Line 24:


== Rezolvare ==
== Rezolvare ==
=== Rezolvare ver. 1 ===
<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 ===
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


Line 51: Line 125:


# afișăm suma
# afișăm suma
print("Datele au fost introduse corect.")
print("Suma primelor cifre este:", suma)
print("Suma primelor cifre este:", suma)


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 22:20, 15 May 2023

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>