Cześć! Próbuję napisać program wyświetlający najwyższą potęgę dwójki z których składa się wpisana przez użytkownika liczba np. gdy użytkownik wpisze 256 to najwyższa potęga to 256, gdy poda 230 program wypisze 256+4, gdy użytkownik poda 112 program wypisze 64+32+16. Napisałem program w Python który działa ale nie mogę sobie poradzić żeby napisać taki program w C++. Oto treść programu w Python :
def wprowadzisprawdz(tekst): # deklaracja funkcji
x = int(input(tekst)) # wprowadzanie zmiennej
if x <= 0:
print (“Zmienna jest za mala”)
wprowadzisprawdz()
return (x)
print (“Witam”)
x = wprowadzisprawdz("Wprowadz liczbe: ")
tab = [] # deklaracja tablicy
while x > 0:
a = x%2
if a > 0:
tab.append(1) # dodawanie do tablicy 1
else:
tab.append(0)
x = x//2 # dzielenie z “//” zawsze daje int nie float
Jak narazie mam napisaną zamianę liczby na system binarny i wyświetlenie ile jedynek jest w liczbie binarnej co pozwoli mi na dowiedzenie się ile będzie potęg. Nie mam pomysłu jak napisać żeby wyliczało potęgi.
Gdzie i to indeks kolejny licząc od zera, na najmniej znaczącej pozycji. To swój wynik uzyskasz w następujący sposób: Wypisujesz tylko te pozycje dla których v = 1 oraz wartość dla pozycji i wynosi 2^i.
W C nie konkatenuje się stringów, jak w Python czy PHP. Poza tym, to nie rozumiem twojego algorytmu. Co do potęgi, to robisz to samo, co w Pythonie - sprawdzasz czy liczba jest podzielna przez dwa i dzielisz przez dwa. W assemblerze pod x86 i wcześniejsze chyba Intela również, dałoby się to zrobić szybciej - przesunięcie i sprawdzenie bitu przepełnienia/przeniesienia.
Skoro gość nie ogarnia podstaw to dając mu gotowiec zwyczajnie go krzywdzisz. Pomijając fakt złych nawyków skoro ma działający kod to go sobie skopiuje do szkoły czy gdzie tam mu go zadali i nic się nie nauczy.
Pomijając fakt osób z trudniejszymi problemami które będą czekać na gotowce, a którym ty nie pomożesz