0909 - PermCircCif: Difference between revisions
Vardai Erwin (talk | contribs) No edit summary |
Vardai Erwin (talk | contribs) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 9: | Line 9: | ||
==Date de intrare== | ==Date de intrare== | ||
Se citește de la tastatură un număr '''n'''. | |||
==Date de ieșire== | ==Date de ieșire== | ||
Dacă datele sunt corecte, apare textul '''"Datele | Dacă datele sunt corecte, apare textul '''"Datele de intrare corespund restricțiilor impuse."''' și se returnează valoarea corectă. Dacă datele sunt incorecte, apare mesajul '''"Datele de intrare nu corespund restricțiilor impuse."'''. | ||
==Exemplu== | ==Exemplu== | ||
===Exemplul 1=== | ===Exemplul 1=== | ||
; | ;Intrare | ||
:1372 | |||
;Ieșire | |||
:Datele de intrare corespund restrictiilor impus. | |||
:3721 | |||
==Important== | ==Important== | ||
Line 27: | Line 31: | ||
===Rezolvare ver. 1=== | ===Rezolvare ver. 1=== | ||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
def validare(n): | |||
if 1 <= n < 1000000000: | |||
return True | |||
else: | |||
return False | |||
def perm(n): | def perm(n): | ||
if n < 10: | if n < 10: | ||
Line 39: | Line 50: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n = int(input()) | n = int(input()) | ||
if | if validare(n): | ||
print("Datele | print("Datele de intrare corespund restrictiilor impus.") | ||
perm(n) | n = perm(n) | ||
print("Numarul rotit:", n) | |||
else: | else: | ||
print("Datele nu | print("Datele de intrare nu corespund restrictiilor impus.") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicație== | |||
Acest cod conține două funcții: validare și perm. | |||
Funcția validare primește un număr n și verifică dacă acesta se află în intervalul [1, 1 000 000 000). Dacă numărul este valid, funcția returnează valoarea booleană True. În caz contrar, returnează valoarea booleană False. | |||
Funcția perm primește un număr n și realizează o permutare circulară a cifrelor acestuia. Mai exact, funcția converteste numărul într-un șir de cifre, apoi mută prima cifră la finalul șirului și reasamblează șirul de cifre într-un număr întreg. Funcția returnează numărul obținut după permutare. | |||
În blocul if-else de la sfârșitul fișierului, se citeste un număr întreg n de la tastatură. Apoi se verifică dacă acesta este valid, apelând funcția validare. Dacă numărul este valid, se afișează mesajul "Datele de intrare corespund restrictiilor impus." și se realizează permutarea circulară a cifrelor, apelând funcția perm și afișând rezultatul. În caz contrar, se afișează mesajul "Datele de intrare nu corespund restrictiilor impus." fără a realiza permutarea circulară a cifrelor. |
Latest revision as of 16:14, 6 May 2023
Cerință[edit | edit source]
Să se scrie o funcție Python care să realizează permutarea circulară spre stânga a cifrelor unui număr natural. Numărul este transmis prin intermediul unui parametru care se întoarce din funcție modificat.
Restricții de precizări[edit | edit source]
- numele funcției va fi perm
- funcția va avea un singur parametru, n
- parametrul n va fi un număr natural nenul mai mic decât 1.000.000.000
Date de intrare[edit | edit source]
Se citește de la tastatură un număr n.
Date de ieșire[edit | edit source]
Dacă datele sunt corecte, apare textul "Datele de intrare corespund restricțiilor impuse." și se returnează valoarea corectă. Dacă datele sunt incorecte, apare mesajul "Datele de intrare nu corespund restricțiilor impuse.".
Exemplu[edit | edit source]
Exemplul 1[edit | edit source]
- Intrare
- 1372
- Ieșire
- Datele de intrare corespund restrictiilor impus.
- 3721
Important[edit | edit source]
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> def validare(n):
if 1 <= n < 1000000000: return True else: return False
def perm(n):
if n < 10: return n
cifre = [int(digit) for digit in str(n)] cifre.append(cifre.pop(0))
return int(.join(map(str, cifre)))
if __name__ == '__main__':
n = int(input()) if validare(n): print("Datele de intrare corespund restrictiilor impus.") n = perm(n) print("Numarul rotit:", n) else: print("Datele de intrare nu corespund restrictiilor impus.")
</syntaxhighlight>
Explicație[edit | edit source]
Acest cod conține două funcții: validare și perm.
Funcția validare primește un număr n și verifică dacă acesta se află în intervalul [1, 1 000 000 000). Dacă numărul este valid, funcția returnează valoarea booleană True. În caz contrar, returnează valoarea booleană False.
Funcția perm primește un număr n și realizează o permutare circulară a cifrelor acestuia. Mai exact, funcția converteste numărul într-un șir de cifre, apoi mută prima cifră la finalul șirului și reasamblează șirul de cifre într-un număr întreg. Funcția returnează numărul obținut după permutare.
În blocul if-else de la sfârșitul fișierului, se citeste un număr întreg n de la tastatură. Apoi se verifică dacă acesta este valid, apelând funcția validare. Dacă numărul este valid, se afișează mesajul "Datele de intrare corespund restrictiilor impus." și se realizează permutarea circulară a cifrelor, apelând funcția perm și afișând rezultatul. În caz contrar, se afișează mesajul "Datele de intrare nu corespund restrictiilor impus." fără a realiza permutarea circulară a cifrelor.