Перевод числа в различные системы счисления - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вобщем задание состоит в следующем: перевести число в ситему счисления (из десятичной в двоичную вплоть до 36-ричной) . Задание на форуме такое есть но хочется зделать как говориться по своему. Как говориться хочу заново изобрести колесо Вот все что я всеми правдами и неправдами пытался зделать . Вопросов два: из этого вобще чтото может получится и второй : если может то конкретно укажите пожалусто на ощибки . Заранее спасибо!
#include <iostream>
#include <Windows.h>
using namespace std;
//int Pro (int sys);
void main()
{setlocale (LC_ALL,"rus");
    int a=0,b=0,sys=0;
    char simwol_0 ='A';  
    char simwol_1 ='B';  
    char simwol_2 ='C';  
    char simwol_3 ='D';  
    char simwol_4 ='E';  
    char simwol_5 ='F';  
    char simwol_6 ='G';  
    char simwol_7 ='H';  
    char simwol_8 ='I';  
    char simwol_9 ='J';  
    char simwol_10 ='K'; 
    char simwol_11 ='L'; 
    char simwol_12 ='M'; 
    char simwol_13 ='N'; 
    char simwol_14 ='O'; 
    char simwol_15 ='P'; 
    char simwol_16 ='Q'; 
    char simwol_17 ='R'; 
    char simwol_18 ='S'; 
    char simwol_19 ='T'; 
    char simwol_20 ='U'; 
    char simwol_21 ='V'; 
    char simwol_22 ='W'; 
    char simwol_23 ='X'; 
    char simwol_24 ='Y'; 
    char simwol_25 ='Z'; 
    char simwol_26 = 10;
    cout<<"Введите число которое хотите расчитать : ";cin>>a;
    if (a<=0)
    {cout<<"\n Вы вели отрицательное число (или ноль) , оно не может быть расчитанно !";}
    if (a>0) { cout<<"Укажите систему счисления в котрую хотите перевести число (от 2 до 36) : ";cin>>sys;
    const int ai=1000000,bi=100;
 char mas[ai];
// int mas[bi];
//int war_0=0, war_1=0, war_2=0;
 
for (int daser;;)
{
 for (int i=0,j;a!=0;i++) //j-переменная счётчик (накопитель)
 { j=a%sys;
 
 if (j<10){mas[i]=j;}
 if (j>=10) { 
 switch (j)
 {case 10: mas[i]=simwol_0;break;
  case 11: mas[i]=simwol_1;break;
 case 12:   mas[i]=simwol_2;break;
 case 13:   mas[i]=simwol_3;break;
 case 14:   mas[i]=simwol_4;break;
 case 15:   mas[i]=simwol_5;break;
 case 16:   mas[i]=simwol_6;break;
 case 17:   mas[i]=simwol_7;break;
 case 18:   mas[i]=simwol_8;break;
 case 19:   mas[i]=simwol_9;break;
 case 20:   mas[i]=simwol_10;break;
 case 21:   mas[i]=simwol_11;break;
 case 22:   mas[i]=simwol_12;break;
 case 23:   mas[i]=simwol_13;break;
 case 24:   mas[i]=simwol_14;break;
 case 25:   mas[i]=simwol_15;break;
 case 26:   mas[i]=simwol_16;break;
 case 27:   mas[i]=simwol_17;break;
 case 28:   mas[i]=simwol_18;break;
 case 29:   mas[i]=simwol_19;break;
 case 30:   mas[i]=simwol_20;break;
 case 31:   mas[i]=simwol_21;break;
 case 32:   mas[i]=simwol_22;break;
 case 33:   mas[i]=simwol_23;break;
 case 34:   mas[i]=simwol_24;break;
 case 35:   mas[i]=simwol_25;break;
 case 36:   mas[i]=simwol_26;break;} }
 
 } 
cout<<"Ваше число в ("<<sys<<") системе счисления равна : "<<mas[daser];break;
}
    
 a=a/sys;
 }
system ("pause");}
    //cout<<"Ваше число в ("<<sys<<") системе счисления равна : "<<mas[ai];

/*int Pro (int sys, int b)
    {const int ai=100,bi=100;
 int mas[ai];
 int mas[bi];
//int war_0=0, war_1=0, war_2=0;
 for (int i,j;b=!0;i++) //j-переменная счётчик (накопитель)
 { b%sys=j;
 
 if (j<10){mas[i]=j;}
 if (j>=10) { 
 switch (j)
 {case 10: char simwol ='A'; j=simwol; mas[i]=simwol;break;
  case 11: char simwol ='B'; j=simwol; mas[i]=simwol;break;
 case 12: char simwol ='C'; j=simwol; mas[i]=simwol;break;
 case 13: char simwol ='D'; j=simwol; mas[i]=simwol;break;
 case 14: char simwol ='E'; j=simwol; mas[i]=simwol;break;
 case 15: char simwol ='F'; j=simwol; mas[i]=simwol;break;
 case 16: char simwol ='G'; j=simwol; mas[i]=simwol;break;
 case 17: char simwol ='H'; j=simwol; mas[i]=simwol;break;
 case 18: char simwol ='I'; j=simwol; mas[i]=simwol;break;
 case 19: char simwol ='J'; j=simwol; mas[i]=simwol;break;
 case 20: char simwol ='K'; j=simwol; mas[i]=simwol;break;
 case 21: char simwol ='L'; j=simwol; mas[i]=simwol;break;
 case 22: char simwol ='M'; j=simwol; mas[i]=simwol;break;
 case 23: char simwol ='N'; j=simwol; mas[i]=simwol;break;
 case 24: char simwol ='O'; j=simwol; mas[i]=simwol;break;
 case 25: char simwol ='P'; j=simwol; mas[i]=simwol;break;
 case 26: char simwol ='Q'; j=simwol; mas[i]=simwol;break;
 case 27: char simwol ='R'; j=simwol; mas[i]=simwol;break;
 case 28: char simwol ='S'; j=simwol; mas[i]=simwol;break;
 case 29: char simwol ='T'; j=simwol; mas[i]=simwol;break;
 case 30: char simwol ='U'; j=simwol; mas[i]=simwol;break;
 case 31: char simwol ='V'; j=simwol; mas[i]=simwol;break;
 case 32: char simwol ='W'; j=simwol; mas[i]=simwol;break;
 case 33: char simwol ='X'; j=simwol; mas[i]=simwol;break;
 case 34: char simwol ='Y'; j=simwol; mas[i]=simwol;break;
 case 35: char simwol ='Z'; j=simwol; mas[i]=simwol;break;
 case 36: char simwol ='10'; j=simwol; mas[i]=simwol;break;} }
} */
Код не завершен. Но подскажите сможет ли он вобще заработать ?

Решение задачи: «Перевод числа в различные системы счисления»

textual
Листинг программы
#include <iostream>
#include <Windows.h>
using namespace std;
void fun (int n,int k)
{if ((n > 0, 2 <= k <= 37))// Проверка входных данных
{
    int mas_int[100];
int i=0;
char mas[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
 for(;n!=0;)//Вычисляем нужное значение :)
 {
 mas_int[i]=n%k;
 n/=k;
 i++;
 }
 cout<<"Результат перевода = ";
 for (int j = i-1; j >=0; j--) //Переварачиваем массив
{cout<<mas[ mas_int[j] ];}
 cout<<"\n\n";
}}
 
void main()
{setlocale (LC_ALL,"rus");
int a=0;
cout<<"Введите число которое хотите перевести : ";cin>>a;cout<<"\n\n";
int sys=0;
cout<<"Введите систему счисления в которую хотите произвести перевод : ";cin>>sys;cout<<"\n\n";
 
fun (a,sys);
 
system ("pause");}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с потоками ввода-вывода и Windows.h
  2. Объявляем функцию fun с двумя параметрами типа int n и k
  3. Проверяем корректность входных данных - n больше 0 и 2 <= k <= 37
  4. Создаем массив mas_int размером 100 для хранения результатов перевода
  5. Создаем массив mas размером 30 для хранения соответствия цифр и символов
  6. Начинаем цикл for для вычисления результата перевода, используя операторы % и / для деления и остатка от деления
  7. В каждой итерации цикла присваиваем элементу массива mas_int значение остатка от деления n на k и обновляем n, вычитая из него k
  8. Увеличиваем i после каждой итерации цикла
  9. Выводим результат перевода, используя цикл for, который проходит по массиву mas_int в обратном порядке и выводит соответствующий символ из массива mas
  10. В функции main считываем число и систему счисления, в которую необходимо произвести перевод
  11. Вызываем функцию fun с введенными значениями a и sys
  12. Ожидаем нажатия клавиши для завершения работы программы

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


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

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

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