4042 - b16 rec: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
Pagină nouă: == Cerința == Se citeste un număr natural n în baza 10. Să se transforme acest număr în baza 16, folosind un subprogram recursiv. == Date de intrare == Programul citește de la tastatură numărul n. == Date de ieșire == Programul va afișa pe ecran un șir de caractere reprezentând transformarea numărul n în baza 16. == Restricții și precizări == * Reprezentarea în baza 10 a numărului dat este un număr natural cel mult egal cu 4 294 967 295. * Cifrele în...
 
Cata (talk | contribs)
No edit summary
Tag: visualeditor-switched
Line 1: Line 1:
== Cerința ==
== Cerința ==
Se citeste un număr natural n în baza 10. Să se transforme acest număr în baza 16, folosind un subprogram recursiv.
Se citește un număr natural n în baza 10. Să se transforme acest număr în baza 16, folosind un subprogram recursiv.


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


== Date de ieșire ==
==Date de ieșire==
Programul va afișa pe ecran un șir de caractere reprezentând transformarea numărul n în baza 16.
Programul va afișa pe ecran un șir de caractere reprezentând transformarea numărul n în baza 16.


== Restricții și precizări ==
==Restricții și precizări==  
* Reprezentarea în baza 10 a numărului dat este un număr natural cel mult egal cu 4 294 967 295.
*Reprezentarea în baza 10 a numărului dat este un număr natural cel mult egal cu 4 294 967 295.
* Cifrele în baza 16 sunt : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
*Cifrele în baza 16 sunt : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
== Exemplu ==
==Exemplu==


Intrare<br>
Intrare<br>
Line 18: Line 18:
Ieșire<br>
Ieșire<br>
<code>FF034B</code>
<code>FF034B</code>
==Explicație==
Funcția DecToHexRec(n) primește ca parametru un număr întreg pozitiv n și returnează reprezentarea sa în baza 16 (sau sistemul hexadecimal) utilizând recursivitatea.


== Rezolvare ==
Funcția verifică dacă n este mai mic decat 16. Dacă acest lucru este adevărat, înseamnă că n este o cifră în baza 16 și funcția returnează reprezentarea sa ca și string. Dacă n este mai mare decât 16, funcția este apelată recursiv pentru a obține reprezentarea cifrelor mai semnificative ale lui n. Variabila q este folosită pentru a reține câtul împărțirii lui n la 16 și r este folosită pentru a reține restul acestei împărțiri. Dacă restul este mai mic decat 10, funcția returnează reprezentarea acestuia ca și string, iar dacă este mai mare sau egal cu 10, funcția returnează caracterul corespunzător din tabelul ASCII pentru cifrele hexazecimale.
 
În final, funcția returnează reprezentarea numărului n în baza 16 ca și un string.
 
==Rezolvare==
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
def validate_n(n):
    if isinstance(n, int) and n >= 0 and n <= 4294967295:
        return True
    else:
        return False
def DecToHexRec(n):
def DecToHexRec(n):
     if n < 16:
     if n < 16:
Line 34: Line 46:
         else:
         else:
             return DecToHexRec(q) + chr(ord('A') + r - 10)
             return DecToHexRec(q) + chr(ord('A') + r - 10)
def main():
    n = input("Introduceți un număr întreg pozitiv mai mic sau egal cu 4294967295: ")
    try:
        n = int(n)
        if validate_n(n):
            hex_n = DecToHexRec(n)
            print(f"Reprezentarea în hexazecimal a numărului {n} este: {hex_n}")
        else:
            print("Numărul introdus nu este valid.")
    except ValueError:
        print("Nu ați introdus un număr întreg.")
</syntaxhighlight>
</syntaxhighlight>

Revision as of 10:06, 6 April 2023

Cerința

Se citește un număr natural n în baza 10. Să se transforme acest număr în baza 16, folosind un subprogram recursiv.

Date de intrare

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

Date de ieșire

Programul va afișa pe ecran un șir de caractere reprezentând transformarea numărul n în baza 16.

Restricții și precizări

  • Reprezentarea în baza 10 a numărului dat este un număr natural cel mult egal cu 4 294 967 295.
  • Cifrele în baza 16 sunt : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Exemplu

Intrare
16712523

Ieșire
FF034B

Explicație

Funcția DecToHexRec(n) primește ca parametru un număr întreg pozitiv n și returnează reprezentarea sa în baza 16 (sau sistemul hexadecimal) utilizând recursivitatea.

Funcția verifică dacă n este mai mic decat 16. Dacă acest lucru este adevărat, înseamnă că n este o cifră în baza 16 și funcția returnează reprezentarea sa ca și string. Dacă n este mai mare decât 16, funcția este apelată recursiv pentru a obține reprezentarea cifrelor mai semnificative ale lui n. Variabila q este folosită pentru a reține câtul împărțirii lui n la 16 și r este folosită pentru a reține restul acestei împărțiri. Dacă restul este mai mic decat 10, funcția returnează reprezentarea acestuia ca și string, iar dacă este mai mare sau egal cu 10, funcția returnează caracterul corespunzător din tabelul ASCII pentru cifrele hexazecimale.

În final, funcția returnează reprezentarea numărului n în baza 16 ca și un string.

Rezolvare

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

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

def DecToHexRec(n):

   if n < 16:
       if n < 10:
           return str(n)
       else:
           return chr(ord('A') + n - 10)
   else:
       q = n // 16
       r = n % 16
       if r < 10:
           return DecToHexRec(q) + str(r)
       else:
           return DecToHexRec(q) + chr(ord('A') + r - 10)

def main():

   n = input("Introduceți un număr întreg pozitiv mai mic sau egal cu 4294967295: ")
   try:
       n = int(n)
       if validate_n(n):
           hex_n = DecToHexRec(n)
           print(f"Reprezentarea în hexazecimal a numărului {n} este: {hex_n}")
       else:
           print("Numărul introdus nu este valid.")
   except ValueError:
       print("Nu ați introdus un număr întreg.")

</syntaxhighlight>