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