4211 - ElimZTRec: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
No edit summary
Cata (talk | contribs)
No edit summary
 
(One intermediate revision by the same user not shown)
Line 6: Line 6:
* Numele funcției este ElimZTRec.
* Numele funcției este ElimZTRec.
* Se recomandă utilizarea recursivității în rezolvarea problemei.
* Se recomandă utilizarea recursivității în rezolvarea problemei.
== Exemplu ==
ElimZTRec(240) = 24, ElimZTRec(123) = 123 și ElimZTRec(20500) = 205.


== Explicație ==
==Date de intrare==
Funcția <code>ElimZTRec</code> primește ca parametru un număr natural <code>n</code> și elimină zerourile de la finalul acestuia. Dacă ultima cifră a lui <code>n</code> este diferită de zero, funcția returnează <code>n</code>. În caz contrar, se apelează funcția recursiv cu <code>n</code> împărțit la 10.
Programul citește de la tastatură numărul n.


Funcția de validare <code>validate_n</code> verifică dacă <code>n</code> este un număr natural între 1 și 2.147.000.000 (inclusiv) folosind operatorii de comparație <code>>=</code> și <code><=</code>.
==Date de ieșire==
 
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte.", apoi pe un rând nou un mesaj dat în funcție de valoarea returnată de funcția ElimZTRec, reprezentând numărul cerut. În cazul în care numărul introdus depășește limitele date, se va afișa "Numarul introdus nu este valid.", iar dacă numărul introdus nu este întreg, se va afișa "Nu ati introdus un numar intreg."
Funcția <code>main</code> primește un număr natural <code>n</code> de la tastatură, verifică dacă acesta este valid folosind funcția <code>validate_n</code>, elimină zerourile de la finalul lui <code>n</code> folosind funcția <code>ElimZTRec</code> și afișează rezultatul.


==Exemplu 1==
; Intrare
: Introduceti un numar natural intre 1 si 2147000000: 240
; Ieșire
: Datele introduse sunt valide.
: Numarul fara zerouri la final este: 24
==Exemplu 2==
; Intrare
: Introduceti un numar natural intre 1 si 2147000000: 123
; Ieșire
: Datele introduse sunt valide.
: Numarul fara zerouri la final este: 123
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
Line 30: Line 39:
         return ElimZTRec(n // 10)
         return ElimZTRec(n // 10)


def main():
if __name__ == "__main__":
     n = input("Introduceti un numar natural intre 1 si 2147000000: ")
     n = input("Introduceti un numar natural intre 1 si 2147000000: ")
     try:
     try:
Line 36: Line 45:
         if validate_n(n):
         if validate_n(n):
             result = ElimZTRec(n)
             result = ElimZTRec(n)
            print("Datele introduse sunt valide.")
             print(f"Numarul fara zerouri la final este: {result}")
             print(f"Numarul fara zerouri la final este: {result}")
         else:
         else:
Line 42: Line 52:
         print("Nu ati introdus un numar natural.")
         print("Nu ati introdus un numar natural.")
</syntaxhighlight>
</syntaxhighlight>
==Explicație==
Funcția validate_n(n) verifică dacă valoarea argumentului n este un număr întreg pozitiv între 1 și 2147000000 (valoarea maximă pe 32 de biți). Dacă această condiție este îndeplinită, funcția returnează True, altfel returnează False.
Funcția ElimZTRec(n) primește un număr natural n și elimină zerourile de la sfârșitul acestuia recursiv, până când ultima cifră a numărului este diferită de 0. În cazul în care ultima cifră a numărului este diferită de 0, funcția returnează valoarea inițială a numărului, altfel apelează funcția recursiv cu n împărțit la 10.
În secțiunea if __name__ == "__main__":, programul primește de la utilizator un număr natural, îl validează folosind funcția validate_n(n), apelează funcția ElimZTRec(n) pentru a elimina zerourile de la sfârșitul numărului și afișează rezultatul. Dacă numărul introdus de utilizator nu este valid, se afișează un mesaj corespunzător.

Latest revision as of 07:17, 3 May 2023

Cerința[edit | edit source]

Scrieți funcția recursivă ElimZTRec care primind ca parametru un număr natural nenul n, returnează numărul obținut prin eliminarea eventualelor cifre de 0 de la sfârșitul lui n.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 2.147.000.000
  • Numele funcției este ElimZTRec.
  • Se recomandă utilizarea recursivității în rezolvarea problemei.

Date de intrare[edit | edit source]

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

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte.", apoi pe un rând nou un mesaj dat în funcție de valoarea returnată de funcția ElimZTRec, reprezentând numărul cerut. În cazul în care numărul introdus depășește limitele date, se va afișa "Numarul introdus nu este valid.", iar dacă numărul introdus nu este întreg, se va afișa "Nu ati introdus un numar intreg."

Exemplu 1[edit | edit source]

Intrare
Introduceti un numar natural intre 1 si 2147000000: 240
Ieșire
Datele introduse sunt valide.
Numarul fara zerouri la final este: 24

Exemplu 2[edit | edit source]

Intrare
Introduceti un numar natural intre 1 si 2147000000: 123
Ieșire
Datele introduse sunt valide.
Numarul fara zerouri la final este: 123

Rezolvare[edit | edit source]

<syntaxhighlight lang="python"> def validate_n(n):

   if isinstance(n, int) and n >= 1 and n <= 2147000000:
       return True
   else:
       return False

def ElimZTRec(n):

   if n % 10 != 0:
       return n
   else:
       return ElimZTRec(n // 10)

if __name__ == "__main__":

   n = input("Introduceti un numar natural intre 1 si 2147000000: ")
   try:
       n = int(n)
       if validate_n(n):
           result = ElimZTRec(n)
           print("Datele introduse sunt valide.")
           print(f"Numarul fara zerouri la final este: {result}")
       else:
           print("Numarul introdus nu este valid.")
   except ValueError:
       print("Nu ati introdus un numar natural.")

</syntaxhighlight>

Explicație[edit | edit source]

Funcția validate_n(n) verifică dacă valoarea argumentului n este un număr întreg pozitiv între 1 și 2147000000 (valoarea maximă pe 32 de biți). Dacă această condiție este îndeplinită, funcția returnează True, altfel returnează False.

Funcția ElimZTRec(n) primește un număr natural n și elimină zerourile de la sfârșitul acestuia recursiv, până când ultima cifră a numărului este diferită de 0. În cazul în care ultima cifră a numărului este diferită de 0, funcția returnează valoarea inițială a numărului, altfel apelează funcția recursiv cu n împărțit la 10.

În secțiunea if __name__ == "__main__":, programul primește de la utilizator un număr natural, îl validează folosind funcția validate_n(n), apelează funcția ElimZTRec(n) pentru a elimina zerourile de la sfârșitul numărului și afișează rezultatul. Dacă numărul introdus de utilizator nu este valid, se afișează un mesaj corespunzător.