4042 - b16 rec: Difference between revisions
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... |
No edit summary |
||
Line 1: | Line 1: | ||
== Cerința == | == Cerința == | ||
Se | 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>