1566 - Cif Sort: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
Line 1: Line 1:
Sursă: [https://www.pbinfo.ro/probleme/1566/cifsort]
Sursă: [https://www.pbinfo.ro/probleme/1566/cifsort]
== Cerinţa ==
== Cerinţa ==
Se da numarul natural '''numar'''. Afisati numarul, cu prima cifra inversata cu a 2-a, a 3-a cu a 4-a, etc.
Se da numarul natural '''n'''. Afisati numarul, cu prima cifra inversata cu a 2-a, a 3-a cu a 4-a, etc.
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''numar'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieşire ==
== Date de ieşire ==
Dacă datele sunt introduse corect, pe ecran se va afișa '''"Datele sunt introduse corect."''', apoi se va afișa pe ecran valoarea cerută. în caz contrar, se va afișa pe ecran. '''"Datele nu au fost introduse corect."'''.
Dacă datele sunt introduse corect, pe ecran se va afișa '''"Datele sunt introduse corect."''', apoi se va afișa pe ecran numarul, cu prima cifra inversata cu a 2-a, a 3-a cu a 4-a, etc. În caz contrar, se va afișa pe ecran. '''"Datele nu au fost introduse corect."'''.
== Restricții și precizări ==
== Restricții și precizări ==
* 10 ⩽ numar ⩽ 99.999.999
* '''10 ⩽ numar ⩽ 99.999.999'''
*  '''numar''' are un numar par de cifre.
*  '''numar''' are un numar par de cifre.
== Exemplu ==
== Exemplu ==
Line 13: Line 13:
: 123456
: 123456
; Ieșire
; Ieșire
: Datele au fost introduse corect.
: 214365
: 214365
== Explicație ==
== Explicație ==
Line 19: Line 20:


<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#1566


numar = input("Introduceti un numar cu un numar par de cifre: ")
def verificare(numar):
#Verificam daca numarul are un numar par de cifre
     if len(numar) % 2 != 0:
     if len(numar) % 2 != 0:
      print("Datele nu au fost introduse corect. Numarul trebuie sa contina un numar par de cifre.")
        return False
    try:
        int(numar)
        return True
    except ValueError:
        return False
 
def rezolvare(numar):
    invers = ""
    for i in range(0, len(numar), 2):
        invers += numar[i+1]
        invers += numar[i]
    return int(invers)
 
if __name__ == "__main__":
    numar = input("Introduceti un numar cu un numar par de cifre: ")
    if verificare(numar):
        print("Datele sunt introduse corect.")
        print(rezolvare(numar))
     else:
     else:
# Inversam cifrele numarului
        print("Datele nu au fost introduse corect.")
      print("Datele au fost introduse corect.")
 
      invers = ""
 
      for i in range(0, len(numar), 2):
 
          invers += numar[i+1]
          invers += numar[i]
# Convertim inversul la intreg si il afisam
invers_numar = int(invers)
print(invers_numar)
</syntaxhighlight>
</syntaxhighlight>
== Explicație cod ==
Funcția '''verificare(numar)''' verifică dacă numărul are un număr par de cifre și dacă toate cifrele sunt cifre întregi. Dacă aceste condiții sunt îndeplinite, funcția returnează '''True''', altfel returnează '''False'''.<br><br>Funcția '''rezolvare(numar)''' primește numărul și creează un șir de caractere în care cifrele inversează poziția. Algoritmul funcției merge prin număr începând cu prima cifră și adăugând în noul șir caracterul de pe poziția impară și apoi caracterul de pe poziția pară, adică inversând poziția acestora. Funcția returnează numărul întors.<br><br>Instrucțiunea '''if __name__ == "__main__":''' citește numărul de la tastatură, verifică dacă datele sunt introduse corect folosind funcția '''verificare(numar)''' și afișează rezultatul apelând funcția '''rezolvare(numar)''' în cazul în care datele sunt corecte sau afișează mesajul '''"Datele au fost introduse corect."''' în caz contrar, se afișează mesajul '''"Date nu au fost introduse corect"'''.

Revision as of 05:59, 28 April 2023

Sursă: [1]

Cerinţa

Se da numarul natural n. Afisati numarul, cu prima cifra inversata cu a 2-a, a 3-a cu a 4-a, etc.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieşire

Dacă datele sunt introduse corect, pe ecran se va afișa "Datele sunt introduse corect.", apoi se va afișa pe ecran numarul, cu prima cifra inversata cu a 2-a, a 3-a cu a 4-a, etc. În caz contrar, se va afișa pe ecran. "Datele nu au fost introduse corect.".

Restricții și precizări

  • 10 ⩽ numar ⩽ 99.999.999
  • numar are un numar par de cifre.

Exemplu

Intrare
123456
Ieșire
Datele au fost introduse corect.
214365

Explicație

1 a fost inversat cu 2, 3 cu 4, iar 5 cu 6.

Rezolvare

<syntaxhighlight lang="python" line>

  1. 1566

def verificare(numar):

   if len(numar) % 2 != 0:
       return False
   try:
       int(numar)
       return True
   except ValueError:
       return False

def rezolvare(numar):

   invers = ""
   for i in range(0, len(numar), 2):
       invers += numar[i+1]
       invers += numar[i]
   return int(invers)

if __name__ == "__main__":

   numar = input("Introduceti un numar cu un numar par de cifre: ")
   if verificare(numar):
       print("Datele sunt introduse corect.")
       print(rezolvare(numar))
   else:
       print("Datele nu au fost introduse corect.")


</syntaxhighlight>

Explicație cod

Funcția verificare(numar) verifică dacă numărul are un număr par de cifre și dacă toate cifrele sunt cifre întregi. Dacă aceste condiții sunt îndeplinite, funcția returnează True, altfel returnează False.

Funcția rezolvare(numar) primește numărul și creează un șir de caractere în care cifrele inversează poziția. Algoritmul funcției merge prin număr începând cu prima cifră și adăugând în noul șir caracterul de pe poziția impară și apoi caracterul de pe poziția pară, adică inversând poziția acestora. Funcția returnează numărul întors.

Instrucțiunea if __name__ == "__main__": citește numărul de la tastatură, verifică dacă datele sunt introduse corect folosind funcția verificare(numar) și afișează rezultatul apelând funcția rezolvare(numar) în cazul în care datele sunt corecte sau afișează mesajul "Datele au fost introduse corect." în caz contrar, se afișează mesajul "Date nu au fost introduse corect".