Czołem
Do wykonania mam takie zadanie:
Napisz funkcję, która w sposób rekurencyjny, dokona konwersji liczby z systemu dziesiętnego na system ósemkowy. Wynik powinien być zapisany w zmiennej typu unsigned long long. Prototyp funkcji powinien wyglądać następująco:
unsigned long long decimal_to_octal(unsigned int number);
Napisz program, który pobierze liczbę zapisaną w systemie dziesiętnym i wypisze ją po konwersji w systemie ósemkowym. W przypadku wprowadzenia błędnych danych wyświetlić komunikat Incorrect input i niezwłocznie zakończyć działanie z kodem błędu 1.
Uwaga W programie nie wolno używać zmiennych globalnych.
Uwaga W programie nie wolno używać słowa kluczowego static.
Uwaga W programie nie wolno używać pętli.
Uwaga W programie nie wolno korzystać z biblioteki math.
Przykładowe wejście:
Podaj liczbe: 16
Przykładowe wyjście:
20
Rozpisałem kod:
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
unsigned long long decimal_to_octal(unsigned int number);
int main(int argc, char *argv[])
{
unsigned int zmienna1;
unsigned long long a;
printf("Podaj liczbe:");
if(scanf("%u",&zmienna1)!=1)
{
printf("Incorrect input");
return 1;
}
a=decimal_to_octal(zmienna1);
printf("%d",a);
return 0;
}
unsigned long long decimal_to_octal(unsigned int number)
{
unsigned long long a;
if(number==0)
{
return;
}
if(number!=0)
{
return decimal_to_octal(number/8);
number%8;
}
return 0;
}
Dzięki zaimplementowaniu w if(number==0) return; od razu będzie się wykonywać z powrotem do końca number%8. Jednak to nie jest void, a ja nie wiem jak wyodrębnić tą końcową informację o zachodzącej przy "powrocie" w każdej funkcji number%8. Ktoś może mi podpowiedzieć co muszę zrobić? :/