Перевод числа в различные системы счисления - 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");}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с потоками ввода-вывода и Windows.h
- Объявляем функцию fun с двумя параметрами типа int n и k
- Проверяем корректность входных данных - n больше 0 и 2 <= k <= 37
- Создаем массив mas_int размером 100 для хранения результатов перевода
- Создаем массив mas размером 30 для хранения соответствия цифр и символов
- Начинаем цикл for для вычисления результата перевода, используя операторы % и / для деления и остатка от деления
- В каждой итерации цикла присваиваем элементу массива mas_int значение остатка от деления n на k и обновляем n, вычитая из него k
- Увеличиваем i после каждой итерации цикла
- Выводим результат перевода, используя цикл for, который проходит по массиву mas_int в обратном порядке и выводит соответствующий символ из массива mas
- В функции main считываем число и систему счисления, в которую необходимо произвести перевод
- Вызываем функцию fun с введенными значениями a и sys
- Ожидаем нажатия клавиши для завершения работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д