PDA

Просмотр полной версии : Перевод в 16тиричн СС(C++)



Marat087
12.03.2009, 14:59
Описать функцию, которая, используя стек, преобразует десятичное число N в любую другую систему счисления с основанием В. Используя эту функцию, вывести числа в двоичной, восьмеричной и шестнадцатеричной системах счисления.

Перевод в двоичную и восьмеричную СС работает нормально, а вот 16 как преобразовать числа в символы.



#include<ctype.h>
#include<conio.h>
#include<stdlib.h>
#include<fstream.h>
#include<iostream.h>
struct Stack
{
int data;
Stack *pred;
};
typedef Stack* Sptr;
Sptr top=NULL;
void push(int);
int pop();
int test;
int result=0;
int pow=1;
int di=2;
int z=10;
void main()
{
clrscr();
cout<<"BBedite desati4noe 4islo:\n";
cin>>test;
cout<<"Biberite SS\n";
cin>>di;
while (test>0)
{
result+=(test%di)*pow;
push(result);
test/=di;
pow*=z;
}
cout<<"Otvet:\t"<<pop();
getch();
}
void push (int t)
{
Sptr tmp=new Stack;
tmp->pred=top;
top=tmp;
top->data=t;
}
int pop()
{
Sptr tmp=top;
int result=top->data;
top=top->pred;
delete tmp;
return (result);
}

Albor
12.03.2009, 18:11
printf("%X",num);//выведет число num в 16-ричном виде

А вообще, число в памяти хранится в двоичном виде, переводить в 2-ю, 8-ю, 16-ю ссч проще побитовыми операциями. В 2-й ссч проверяется каждый разряд, в 8-й - по 3 разряда, в 16-ричной - по 4.