0945 - Baze: Difference between revisions

From Bitnami MediaWiki
No edit summary
Line 28: Line 28:


== Rezolvare ==
== Rezolvare ==
=== Rezolvare ver. 1===
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
def main():
def validare(n, b, c):
n = input("Introdu numărul n: ")
    return all(digit.isdigit() and int(digit) < int(b) for digit in n) and 0 <= int(n,
b = int(input("Introdu baza b: "))
          int(b)) <= 999999999 and 2 <= int(b) <= 10 and 2 <= int(c) <= 10
c = int(input("Introdu baza c: "))
n_baza_10 = int(n, b)
n_baza_c = format(n_baza_10, '0' + str(len(n)) + 'X').replace('X', str(c))


     print("Numărul {} în baza {} este {}".format(n, c, n_baza_c))
 
def baze(n, b, c):
    n_baza_10 = int(n, b)
    n_baza_c = format(n_baza_10, '0' + str(len(n)) + 'd')
    base_c_digits = "0123456789abcdefghijklmnopqrstuvwxyz"[:c]
    base_c_num = ""
    remainder = n_baza_10
    while remainder > 0:
        digit = base_c_digits[remainder % c]
        base_c_num = digit + base_c_num
        remainder //= c
     print("Numărul {} în baza {} este {}".format(n, c, int(base_c_num)))
 
 
if __name__ == '__main__':
    n = input("Introdu numărul n: ")
    b = input("Introdu baza b: ")
    c = input("Introdu baza c: ")
 
    if validare(n, b, c):
        b, c = int(b), int(c)
        print("Datele introduse corespund restricțiilor impuse.")
        baze(n, b, c)
    else:
        print("Datele introduse nu corespund restricțiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Revision as of 15:27, 15 March 2023

Cerință

Se dă un număr n scris în baza b. Să se afișeze scrierea acestuia în baza c.

Date de intrare

Programul citește de la tastatură numerele n, b și c separate prin spații.

Date de ieșire

Programul va afișa pe ecran scrierea numărului n în baza c.

Restricții de precizări

  • 2 ⩽ b, c ⩽ 10
  • numărul n este natural si are cel mult nouă cifre
  • rezolvarea acestei probleme necesită utilizarea tablourilor sau a altor forme de memorare a unui număr variabil de valori.

Exemplul 1

Intrare
2013
4
7
Ieșire
Datele introduse corespund restricțiilor impuse.
252

Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def validare(n, b, c):

   return all(digit.isdigit() and int(digit) < int(b) for digit in n) and 0 <= int(n,
          int(b)) <= 999999999 and 2 <= int(b) <= 10 and 2 <= int(c) <= 10


def baze(n, b, c):

   n_baza_10 = int(n, b)
   n_baza_c = format(n_baza_10, '0' + str(len(n)) + 'd')
   base_c_digits = "0123456789abcdefghijklmnopqrstuvwxyz"[:c]
   base_c_num = ""
   remainder = n_baza_10
   while remainder > 0:
       digit = base_c_digits[remainder % c]
       base_c_num = digit + base_c_num
       remainder //= c
   print("Numărul {} în baza {} este {}".format(n, c, int(base_c_num)))


if __name__ == '__main__':

   n = input("Introdu numărul n: ")
   b = input("Introdu baza b: ")
   c = input("Introdu baza c: ")
   if validare(n, b, c):
       b, c = int(b), int(c)
       print("Datele introduse corespund restricțiilor impuse.")
       baze(n, b, c)
   else:
       print("Datele introduse nu corespund restricțiilor impuse.")

</syntaxhighlight>