0367 - Eliminare Cifre: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
Line 24: Line 24:
În urma eliminării aparițiilor ultimei cifre, numerele devin: 2 3 0 54 11. Suma lor este 70.
În urma eliminării aparițiilor ultimei cifre, numerele devin: 2 3 0 54 11. Suma lor este 70.


== Rezolvare ==  
== Rezolvare ==
 
=== Rezolvare ver. 1 ===
<syntaxhighlight lang="python" line>
 
def citeste_nr_numere():
    nr_de_numere = int(input("Introduceți numărul de numere: "))
    while nr_de_numere < 1 or nr_de_numere > 1000:
        nr_de_numere = int(input("Numărul introdus nu este valid. Introduceți un număr între 1 și 1000: "))
    return nr_de_numere
 
def citeste_numar(index):
    numar = int(input(f"Introduceți numărul {index}: "))
    while numar < 0 or numar > 999999:
        numar = int(input("Numărul introdus nu este valid. Introduceți un număr mai mic sau egal cu 999999: "))
    return numar
 
def obtine_ultima_cifra(numar):
    return numar % 10
 
def elimina_aparitii_ultima_cifra(numar, ultima_cifra):
    numar_fara_ultima_cifra = 0
    putere = 1
    while numar > 0:
        cifra = numar % 10
        numar //= 10
        if cifra != ultima_cifra:
            numar_fara_ultima_cifra += cifra * putere
            putere *= 10
    return numar_fara_ultima_cifra
 
def calculeaza_suma(nr_de_numere):
    suma = 0
    for i in range(nr_de_numere):
        numar = citeste_numar(i + 1)
        ultima_cifra = obtine_ultima_cifra(numar)
        numar_fara_ultima_cifra = elimina_aparitii_ultima_cifra(numar, ultima_cifra)
        suma += numar_fara_ultima_cifra
    return suma
 
if __name__ == '__main__':
    nr_de_numere = citeste_nr_numere()
    suma = calculeaza_suma(nr_de_numere)
    print("Datele au fost introduse corect.")
    print("Suma numerelor obținute prin eliminarea aparițiilor ultimei cifre din fiecare număr este:", suma)
 
</syntaxhighlight>
 
=== Rezolvare ver. 2 ===  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


Line 61: Line 109:
print("Datele au fost introduse corect.")
print("Datele au fost introduse corect.")
print("Suma numerelor obtinute prin eliminarea aparitiilor ultimei cifre din fiecare numar este:", suma)
print("Suma numerelor obtinute prin eliminarea aparitiilor ultimei cifre din fiecare numar este:", suma)


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 00:53, 16 May 2023

Sursa: [1]


Cerinţa[edit]

Se dau un numar de numere naturale. Calculaţi suma numerelor obținute prin eliminarea din fiecare număr dat a tuturor aparițiilor ultimei cifre.

Date de intrare[edit]

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

Date de ieșire[edit]

Programul afișează pe ecran suma.

Restricţii şi precizări[edit]

  • 1 ≤ n ≤ 1000
  • numerele citite vor avea cel mult 6 cifre

Exemplu[edit]

Intrare
5
27 1131 4 546 112
Ieșire
70

Explicație[edit]

În urma eliminării aparițiilor ultimei cifre, numerele devin: 2 3 0 54 11. Suma lor este 70.

Rezolvare[edit]

Rezolvare ver. 1[edit]

<syntaxhighlight lang="python" line>

def citeste_nr_numere():

   nr_de_numere = int(input("Introduceți numărul de numere: "))
   while nr_de_numere < 1 or nr_de_numere > 1000:
       nr_de_numere = int(input("Numărul introdus nu este valid. Introduceți un număr între 1 și 1000: "))
   return nr_de_numere

def citeste_numar(index):

   numar = int(input(f"Introduceți numărul {index}: "))
   while numar < 0 or numar > 999999:
       numar = int(input("Numărul introdus nu este valid. Introduceți un număr mai mic sau egal cu 999999: "))
   return numar

def obtine_ultima_cifra(numar):

   return numar % 10

def elimina_aparitii_ultima_cifra(numar, ultima_cifra):

   numar_fara_ultima_cifra = 0
   putere = 1
   while numar > 0:
       cifra = numar % 10
       numar //= 10
       if cifra != ultima_cifra:
           numar_fara_ultima_cifra += cifra * putere
           putere *= 10
   return numar_fara_ultima_cifra

def calculeaza_suma(nr_de_numere):

   suma = 0
   for i in range(nr_de_numere):
       numar = citeste_numar(i + 1)
       ultima_cifra = obtine_ultima_cifra(numar)
       numar_fara_ultima_cifra = elimina_aparitii_ultima_cifra(numar, ultima_cifra)
       suma += numar_fara_ultima_cifra
   return suma

if __name__ == '__main__':

   nr_de_numere = citeste_nr_numere()
   suma = calculeaza_suma(nr_de_numere)
   print("Datele au fost introduse corect.")
   print("Suma numerelor obținute prin eliminarea aparițiilor ultimei cifre din fiecare număr este:", suma)

</syntaxhighlight>

Rezolvare ver. 2[edit]

<syntaxhighlight lang="python" line>

  1. citim numarul de numere n si verificam daca se incadreaza in limitele impuse

nr_de_numere = int(input("Introduceti numarul de numere: ")) while nr_de_numere < 1 or nr_de_numere > 1000:

   nr_de_numere = int(input("Numarul introdus nu este valid. Introduceti un numar intre 1 si 1000: "))
  1. initializam variabila suma cu 0

suma = 0

  1. iteram prin cele n numere

for i in range(nr_de_numere):

   # citim numarul si verificam daca se incadreaza in limitele impuse
   numar = int(input("Introduceti numarul " + str(i + 1) + ": "))
   while numar < 0 or numar > 999999:
       numar = int(input("Numarul introdus nu este valid. Introduceti un numar mai mic sau egal cu 999999: "))
   # obtinem ultima cifra a numarului
   ultima_cifra = numar % 10
   # eliminam toate aparitiile ultimei cifre din numar
   numar_fara_ultima_cifra = 0
   putere = 1
   while numar > 0:
       cifra = numar % 10
       numar //= 10
       if cifra != ultima_cifra:
           numar_fara_ultima_cifra += cifra * putere
           putere *= 10
   # adaugam numarul fara ultima cifra la suma totala
   suma += numar_fara_ultima_cifra
  1. afisam suma totala

print("Datele au fost introduse corect.") print("Suma numerelor obtinute prin eliminarea aparitiilor ultimei cifre din fiecare numar este:", suma)

</syntaxhighlight>