Как сделать перевод числа с 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);
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.429 из 5
Похожие ответы