2575 - Schimb Cif

From Bitnami MediaWiki

Sursa: [1]


Cerinţa[edit | edit source]

Se citește un numar și apoi acel numar de numere naturale. Să se afișeze numerele oglindite fără a modifica prima și ultima cifră.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul de numere, iar apoi numerele naturale.

Date de ieșire[edit | edit source]

Programul va afișa numerele oglindite, separate exact un spațiu, fără a modifica prima și ultima cifră.

Restricţii şi precizări[edit | edit source]

  • 1 ≤ n ≤ 100
  • numerele citite vor fi mai mici decât 5.000.000.000

Exemplu[edit | edit source]

Intrare
3
21 121 1023
Ieșire
21 121 1203

Rezolvare[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line>

def citeste_numar_de_numere():

   while True:
       try:
           numar_de_numere = int(input("Introduceți numărul de numere: "))
           if numar_de_numere <= 0 or numar_de_numere > 100:
               raise ValueError("Numărul de numere trebuie să fie între 1 și 100.")
           return numar_de_numere
       except ValueError as e:
           print(e)

def citeste_numere(numar_de_numere):

   numere = []
   for i in range(numar_de_numere):
       while True:
           try:
               numar = int(input(f"Introduceți numărul {i + 1}: "))
               if numar < 0 or numar >= 5000000000:
                   raise ValueError("Numerele trebuie să fie mai mici decât 5.000.000.000.")
               numere.append(numar)
               break
           except ValueError as e:
               print(e)
   return numere

def inverseaza_cifrele(numere):

   numere_inversate = []
   for numar in numere:
       cifre = list(str(numar))  # transformă numărul într-o listă de cifre
       invers = cifre[0]  # păstrează prima cifră neschimbată
       if len(cifre) > 1:
           invers += .join(cifre[-2:0:-1])  # inversează cifrele din interiorul numărului
       invers += cifre[-1]  # păstrează ultima cifră neschimbată
       numere_inversate.append(int(invers))
   return numere_inversate

if __name__ == "__main__":

   numar_de_numere = citeste_numar_de_numere()  # Citirea numărului de numere
   numere = citeste_numere(numar_de_numere)  # Citirea și validarea numerelor
   numere_inversate = inverseaza_cifrele(numere)  # Inversarea cifrelor numerelor
   # Afișarea numerelor inversate
   for numar in numere_inversate:
       print(numar, end=' ')

</syntaxhighlight>

Rezolvare ver. 2[edit | edit source]

<syntaxhighlight lang="python" line>

def citeste_numar_de_numere():

   while True:
       try:
           numar_de_numere = int(input("Introduceți numărul de numere: "))
           if numar_de_numere <= 0 or numar_de_numere > 100:
               raise ValueError("Numărul de numere trebuie să fie între 1 și 100.")
           return numar_de_numere
       except ValueError as e:
           print(e)

def citeste_numere(numar_de_numere):

   numere = []
   for i in range(numar_de_numere):
       while True:
           try:
               numar = int(input(f"Introduceți numărul {i + 1}: "))
               if numar < 0 or numar >= 5000000000:
                   raise ValueError("Numerele trebuie să fie mai mici decât 5.000.000.000.")
               numere.append(numar)
               break
           except ValueError as e:
               print(e)
   return numere

def inverseaza_cifrele(numere):

   numere_inversate = []
   for numar in numere:
       cifre = list(str(numar))  # transformă numărul într-o listă de cifre
       invers = cifre[0]  # păstrează prima cifră neschimbată
       if len(cifre) > 1:
           invers += .join(cifre[-2:0:-1])  # inversează cifrele din interiorul numărului
       invers += cifre[-1]  # păstrează ultima cifră neschimbată
       numere_inversate.append(int(invers))
   return numere_inversate

if __name__ == "__main__":

   numar_de_numere = citeste_numar_de_numere()
   numere = citeste_numere(numar_de_numere)
   numere_inversate = inverseaza_cifrele(numere)
   for numar in numere_inversate:
       print(numar, end=' ')

</syntaxhighlight>