Перевод числа в различные системы счисления - 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
- Ожидаем нажатия клавиши для завершения работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д