Как сделать перевод числа с 10-й системы счисления в 16-ю - C (СИ)
Формулировка задачи:
Сколько тут перечитал так и не нашол и не понял как сделать перевод с 10ичной системы счисления в 16. Задали мне задание. Написать функцию которая будит принимать 2 аргумента, где 1ый аргумент это любое десятичное число, а 2й аргумент СС в которую нужно преоброзить и вывести на экран. До 8 СС я понял как делать, а вот дальше вообще 0. Немогу понять как сделать чтоб оно выдавало мне буквы.
Вот исходник того что сделал. Кстати делал на Visual Studio 08. Буду рад любой вашей помощи.
#include<iostream>
#include<math.h>
using namespace std;
int CC10_2(int arg, int cc)
{
int i, dl[32];
for (i = 0; i <= 31; i++)
dl[i] = 0;
for (i = 0; arg != 0; i++)
{
dl[i] =arg % cc;
arg =arg / cc;
}
for (i = 31; i >= 0; i--)
cout << dl[i];
cout << endl;
return 0;
}
void main ()
{
CC10_2(19,2);
}Решение задачи: «Как сделать перевод числа с 10-й системы счисления в 16-ю»
textual
Листинг программы
#include<stdio.h>
#define n 60
void perevod(char ms1[n],int ss,double num,int t,char znak)//ss-система счисления в которую необх перевести
{
//num-число которое нужно перевести
//t-точность
//znak-знак числа
char ms[n];
//char ms1[n];
int k1=n/2,k2=n/2+1,num1,i;
num1=num;
num=num-num1;
while(num1>=ss)
{
i=num1%ss;
num1/=ss;
ms[k1--]=i>9?i-10+'a':i+'0';
}
ms[k1--]=num1>9?i-10+'a':num1+'0';
ms[k1]=znak;
ms[k2++]='.';
while(num!=0 && k2-n/2-1<=t)
{
num*=ss;
i=num;
num-=i;
ms[k2++]=i>9?i-10+'a':i+'0';
}
int j=0;
for (i=k1;i<k2;i++)
{
ms1[j]=ms[i];
j++;
}
ms1[j]='\0';
}
void vivod(char ms[n])
{
printf("\n");
for(int i=0;ms[i]!='\0';i++)
{
printf("%c",ms[i]);
}
}
void main()
{
int ss,k1=n/2,k2=n/2+1,t;
double num;
char ms[n];
char znak='+';
printf("vvedite isxodnoe chislo\n");
scanf("%lf",&num);
if (num<0) {znak='-';num*=-1;}
printf("vvedite novoe osnovanie\n");
scanf("%d",&ss);
printf("vvedite tochnost\n");
scanf("%d",&t);
perevod(ms,ss,num,t,znak);
vivod(ms);
}