2575 - Schimb Cif: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
Line 22: Line 22:
== Rezolvare ==  
== Rezolvare ==  


<syntaxhighlight>
=== Rezolvare ver. 1 ===


# Citirea numărului de numere și validarea datelor de intrare
<syntaxhighlight lang="python" line>
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.")
        break
    except ValueError as e:
        print(e)


numere = []
def citeste_numar_de_numere():
# Citirea fiecărui număr și validarea datelor de intrare
for i in range(numar_de_numere):
     while True:
     while True:
         try:
         try:
             numar = input(f"Introduceți numărul {i + 1}: ").strip()
             numar_de_numere = int(input("Introduceți numărul de numere: "))
             if int(numar) < 0 or int(numar) >= 5000000000:
             if numar_de_numere <= 0 or numar_de_numere > 100:
                 raise ValueError("Numerele trebuie să fie mai mici decât 5.000.000.000.")
                 raise ValueError("Numărul de numere trebuie să fie între 1 și 100.")
             numere.append(numar)
             return numar_de_numere
            break
         except ValueError as e:
         except ValueError as e:
             print(e)
             print(e)


# Parcurgerea fiecărui număr și inversarea cifrelor
def citeste_numere(numar_de_numere):
for numar in numere:
    numere = []
    cifre = list(numar)  # transformă numărul într-o listă de cifre
    for i in range(numar_de_numere):
    invers = cifre[0]  # păstrează prima cifră neschimbată
        while True:
    if len(cifre) > 1:
            try:
        invers += ''.join(cifre[-2:0:-1])  # inversează cifrele din interiorul numărului
                numar = int(input(f"Introduceți numărul {i + 1}: "))
    invers += cifre[-1]  # păstrează ultima cifră neschimbată
                if numar < 0 or numar >= 5000000000:
     print(invers, end=' ')  # afișează numărul inversat
                    raise ValueError("Numerele trebuie să fie mai mici decât 5.000.000.000.")
print("Datele au fost introduse corect.")
                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 ===
 
<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>
</syntaxhighlight>

Latest revision as of 09:27, 16 May 2023

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>