Przekształcenie kodu, zmiana liczb

0

Witam :) Piszę jako początkujący i chciałbym zasięgnąć porady. W treści zadania mam zrobić program, który dokona zmiany na liczby 2..16. W podanym kodzie mam tylko na binarne. Za pomocą jakich funkcji mogę to uwzględnić. Poniżej udostępniam kod.

#include <stdio.h>

int liczba;

int main()
{
 printf("Zamiana z systemu dziesietnego na binarny\n");
 printf("Wprowadz liczbe w systemie dziesietnym: ");
 scanf("%d",&liczba);
 int i=0,j, tab[100];
 while(liczba>0)
 {
     tab[i++]=liczba%2;
     liczba=liczba/2;
 }
for(j=i-1; j>=0; j--)

 {
  printf("%d",tab[j]);
 }
 return 0;
 }

Z góry dziękuję za pomoc.

0

Idea jest taka, Masz tablicę znaków letters, a jako liczbę wyświetlasz i - ty znak z tej tablicy (oczywiście od końca - tak są układane reszty, tu dla czytelności sprawdziłby się LIFO Stack):

void dec_converter() {
	int a=0, base = 0;
    printf("Int to converse (up to 65535): \n");
    scanf("%d",&a);
    printf("Base (2 - 16): \n");
    scanf("%d", &base);
    char letters[16]="0123456789ABCDEF";
    int rest;
    int c = 0;
    char b[100];
    do {
		rest = a % base;
		b[c]=rest;
		a=a / base;
		c++;
 
		}
    while (a!=0);
 
    for(int i=c-1;i>=0;i--)
    {
     printf("%c", letters[b[i]]);
    }
    printf("\n");
}
0

Jeżeli możesz użyć bibliotekę standardową, to zamiana na hex wyglądałaby tak:

#include <iostream>
#include <sstream>
#include <iomanip>

std::string int2Hex(int num)
{
  std::ostringstream oss;
  oss << std::setfill('0') << std::setw(2) << std::hex << num;
  
  return oss.str(); 
}

int main()
{
    std::cout << int2Hex(1000) << std::endl;
}

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