2674 - IncDecRec: Difference between revisions
Catalin Moje (talk | contribs) No edit summary |
Catalin Moje (talk | contribs) No edit summary |
||
Line 6: | Line 6: | ||
==Date de ieșire== | ==Date de ieșire== | ||
Dacă datele de intrare corespund restrictiilor impuse se va afișa mesajul "Datele de intrare corespund restricțiilor" și pe un rând nou se afișează ceea ce se cere. Altfel, dacă datele de intrare nu corespund cerinței se va afișa mesajul: "Datele de intrare nu corespund cerinței". | |||
==Restricții și precizări== | ==Restricții și precizări== | ||
Line 15: | Line 15: | ||
==Exemplu== | ==Exemplu== | ||
===Exemplu 1=== | |||
<syntaxhighlight lang="python" line> | |||
Introduceți un număr natural: 4321 | Introduceți un număr natural: 4321 | ||
Datele de intrare corespund restricțiilor impuse. | Datele de intrare corespund restricțiilor impuse. | ||
Rezultatul este: 5230 | Rezultatul este: 5230 | ||
</syntaxhighlight> | |||
===Exemplu 2=== | |||
<syntaxhighlight lang="python" line> | |||
Introduceti un numar: -1241 | |||
Datele de intrare nu corespund restrictiilor impuse. | |||
</syntaxhighlight> | |||
==Rezolvare== | ==Rezolvare== | ||
def | <syntaxhighlight lang="python" line> | ||
if | |||
return 0 | def cifmaxpar(numar): | ||
#Returneaza cea mai mare cifra para a unui numar dat. | |||
#Daca numarul nu contine nicio cifra para, se returneaza -1. | |||
if numar < 0 or numar >= 2000000000: | |||
print("Datele de intrare nu corespund restrictiilor impuse.") | |||
return None | |||
max_cifra_para = -1 | |||
while numar > 0: | |||
cifra = numar % 10 | |||
if cifra % 2 == 0 and cifra > max_cifra_para: | |||
max_cifra_para = cifra | |||
numar //= 10 | |||
if max_cifra_para == -1: | |||
return -1 | |||
else: | else: | ||
return max_cifra_para | |||
def main(): | |||
numar = int(input("Introduceti un numar: ")) | |||
cifra_max = cifmaxpar(numar) | |||
print(" | if cifra_max == None: | ||
return | |||
elif cifra_max == -1: | |||
print("Numarul dat nu contine nicio cifra para.") | |||
else: | else: | ||
print("Datele de intrare | print("Datele de intrare corespund restrictiilor impuse.") | ||
print(f"Cea mai mare cifra para a numarului dat este {cifra_max}.") | |||
if __name__ == "__main__": | |||
print(f" | |||
main() | main() | ||
</syntaxhighlight> |
Revision as of 20:04, 30 March 2023
Cerinţa
Scrieți funcția recursivă IncDecRec care primind ca parametru un număr natural n, returnează numărul obținut din n prin scăderea cu 1 a fiecărei cifre impare și creșterea cu 1 a fiecărei cifre pare.
Date de intrare
Se va introduce de la tastatură un număr natural care va fi transmis ca perimetru
Date de ieșire
Dacă datele de intrare corespund restrictiilor impuse se va afișa mesajul "Datele de intrare corespund restricțiilor" și pe un rând nou se afișează ceea ce se cere. Altfel, dacă datele de intrare nu corespund cerinței se va afișa mesajul: "Datele de intrare nu corespund cerinței".
Restricții și precizări
0 ≤ n ≤ 999.999.999 Numele funcției este IncDecRec. Se recomandă utilizarea recursivității în rezolvarea problemei. De asemenea, se recomandă să nu se folosească alte funcții suplimentare.
Exemplu
Exemplu 1
<syntaxhighlight lang="python" line> Introduceți un număr natural: 4321 Datele de intrare corespund restricțiilor impuse. Rezultatul este: 5230 </syntaxhighlight>
Exemplu 2
<syntaxhighlight lang="python" line> Introduceti un numar: -1241 Datele de intrare nu corespund restrictiilor impuse. </syntaxhighlight>
Rezolvare
<syntaxhighlight lang="python" line>
def cifmaxpar(numar):
#Returneaza cea mai mare cifra para a unui numar dat. #Daca numarul nu contine nicio cifra para, se returneaza -1. if numar < 0 or numar >= 2000000000: print("Datele de intrare nu corespund restrictiilor impuse.") return None max_cifra_para = -1 while numar > 0: cifra = numar % 10 if cifra % 2 == 0 and cifra > max_cifra_para: max_cifra_para = cifra numar //= 10 if max_cifra_para == -1: return -1 else: return max_cifra_para
def main():
numar = int(input("Introduceti un numar: ")) cifra_max = cifmaxpar(numar) if cifra_max == None: return elif cifra_max == -1: print("Numarul dat nu contine nicio cifra para.") else: print("Datele de intrare corespund restrictiilor impuse.") print(f"Cea mai mare cifra para a numarului dat este {cifra_max}.")
if __name__ == "__main__":
main()
</syntaxhighlight>