Δημοσιεύτηκε: 12 Αύγ 2011, 19:16
από Ilias95
Ένα απλό πρόγραμμα που μου ήρθε στο μυαλό και το υλοποίησα κιόλας, είναι η μετατροπή ενός δυαδικού αριθμού σε δεκαδικό και το αντίστροφο.
Παρακάτω οι λύσεις σε python:

Δυαδικός σε δεκαδικό:
Spoiler: show
Κώδικας: Επιλογή όλων
#!/usr/bin/python3

def dyadikos_se_dekadiko(n):
"""Μετατρέπει τον δυαδικό n σε δεκαδικό."""
n = str(n)
n = list(n)
for i in n:
assert i == '0' or i == '1', "Ο αριθμός που δώσατε δεν είναι δυαδικός."
dynami = 0
dekadikos = 0
while n:
psifio = int(n[-1]) * (2 ** dynami)
dekadikos += psifio
del n[-1]
dynami += 1
return(dekadikos)


Δεκαδικός σε δυαδικό:
Spoiler: show
Κώδικας: Επιλογή όλων
#!/usr/bin/python3

def dekadikos_se_dyadiko(n):
"""Μετατρέπει τον δεκαδικό n σε δυαδικό."""
lista = []
dynami = 0
while n != 0:
if (n - 2 ** dynami) >= 0:
dynami += 1
else:
lista.append('1')
dynami -= 1
n -= 2 ** dynami
dynami -= 1
while n < 2 ** dynami and dynami >= 0:
lista.append('0')
dynami -= 1
dynami = 0
return [print(i, end='') for i in lista]


Ο δεύτερος αλγόριθμος μου φάνηκε πιο δύσκολος, τον πρώτο τον έλυσα σε μερικά λεπτά.