Zamiana systemu dziesiętnego na ósemkowy

0

Cześć, muszę zrobić program, który konwertuje liczbę z systemu dziesiętnego na ósemkowy. Musi być REKURENCYJNIE.

**Zrobiłem funkcje, które przeliczają poprawnie, jednak muszę zrobić funkcje nie na typie void tylko na unsigned long long **

Z góry dzięki za pomoc

void show_helper(unsigned int number)
{
  if (number==0) 
  {
    return ;
  }
  show_helper(number/8);
  char tab[]="01234567";

  printf("%c",tab[number % 8]);
}

void decimal_to_octal(unsigned int number)
{
   if(number)
     show_helper(number);
   if(number==0)
     printf("0");
  printf("\n");
}
1

wyważasz otwarte drzwi:

    int x;
    while(scanf("%d", &x) == 1) {
        printf("%d %o\n", x, x);
    }

https://wandbox.org/permlink/uH4R8A8bDLF1EgD2

Zawsze mnie bawi decimal_to_octal z argumentem int ;)
Pewnie miało być print_as_octal.

muszę zrobić funkcje nie na typie void tylko na unsigned long long

I teraz pytanie co autor zadania miał na myśli?

0

Wiem że tak można ale muszę napisać rekurencyjnie funkcję która zwraca liczbę dziesiętną zamienioną na system ósemkowy. Prototyp wygląda: unsigned long long decimal_to_octal(unsigned int number);

0

Tu jest trochę uogólniona funkcja:

unsigned long long decimal_to_base_to9(unsigned long long n, unsigned long long base) {
	if (n == 0) 
		return 0;
	else
		return (n % base + 10 * decimal_to_base_to9(n / base, base));
}

Ne wiem czemu Pytasz na forum, w internecie jest pełno rozwiązań:
https://duckduckgo.com/?q=recursive+decimal+to+binary&t=canonical&ia=answer

0

Wielkie dzięki ;)

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