Z dziesiętnego na ósemkowy

0

Mam problem z funkcją, która ma za zadanie zamienić podaną liczbę w systemie dziesiętnym na ósemkowy. Mój kod

unsigned long long 10_na_8(unsigned int liczba){
    if(liczba==0){
        return 0;
    }
    int wynik = liczba%8;
    liczba/=8;
    return 10_na_8(liczba);
    if(wynik<10){
    return 1;
    }
    else{
        char litera = wynik+55;
        return 1;
    }
    return 0;
}
0

Skompilowałeś go?

1

A jaki konkretnie masz problem?

0

Mój problem polega n atym, że jak wywołuję tą funkcję to wynik zawsze wynosi 0

0

Jaki kompilator skompilował kod z nazwą funkcji zaczynającą się od cyfry?
Poniżej tej linii nic się nie wykona:

return 10_na_8(liczba);
0

ale wynik 0, wychodzi po zmianie nazwy i nw co jest źle

0

Po wyrzuceniu linii nie wpływających na wynik:

unsigned long long 10_na_8(unsigned int liczba){
    if(liczba==0){
        return 0;
    }
    liczba/=8;
    return 10_na_8(liczba);
}
0

Tylko jak to zrobić reukurencyjnie? Bo nie wiem jak wyeliminować pętle żeby działało:/

0
return 10_na_8(liczba);

ta linijka wykonuje się bezwarunkowo, dlatego nic dziwnego, że zwraca 0, wartość, którą zwraca funkcja od razu, dla argumentu 0.

BTW. najprostsze rozwiązanie:

void print_oct(unsigned int n) {
    fprintf("%o\n", n);
}

ewentualnie użyj sprintf, jeśli chcesz utworzyć łańcuch znaków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0