Не работает программа перевода систем счисления - C (СИ)
Формулировка задачи:
Неполучается написать перевод из 10й системы в 16ную. Допустим 13(10) в 16ной системе показывает как 3(?) а не как 13(16). И помогите добавить к числу букву ???
Заранее спасибо.
int TranslateNum (int userNum ,int notation) { int rest = 0 , tempAmount = 0 , count = 0 , amount = 0; while (userNum != 0) { rest = userNum % notation ; userNum = userNum / notation ; tempAmount = tempAmount * 10 + rest ; count ++ ; } while (count != 0) { amount = amount * 10 + tempAmount % 10; tempAmount /= 10; count -- ; } return amount ; } void main () { SetConsoleOutputCP(1251); cout << "УСЛОВИЕ: Написать функцию, которая получает в качестве " << " аргументов целое \nположительное число и систему счисления," << "в которую это число должно переводится \n(системы счисления от 2 до 36)." << " Например, при переводе числа 27 в \nсистему счисления 16 должно" << " получиться 1B; 13 в 5-ю - 23; 35 в 18-ю - 1H.\n\n\t\t\tРЕШЕНИЕ" << endl ; int c = 0 , userNum , notation ; cout << "Введите число для перевода -> " ; cin >> userNum ; cout << "Введите систему счисления в которую требуется перевести Ваше число -> " ; cin >> notation ; c = TranslateNum (userNum , notation) ; cout << "Результат перевода: " << c << endl ; }
Решение задачи: «Не работает программа перевода систем счисления»
textual
Листинг программы
#include<iostream> using namespace std; void main() { int ss,k1=10,k2=11,t,num1,i; double num; char ms[20]={' ',' ', ' ',' ',' ', ' ',' ',' ', ' ',' ',' ', ' ',}; char znak='+'; cout<<"vvedite isxodnoe chislo\n"; cin>>num; if (num<0) {znak='-';num*=-1;} cout<<"vvedite novoe osnovanie\n"; cin>>ss; cout<<"vvedite tochnost\n"; cin>>t; 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-11<=t) { num*=ss; i=num; num-=i; ms[k2++]=i>9?i-10+'a':i+'0'; } cout<<"\n"; for (i=k1;i<k2;i++) {cout<<ms[i];} }
Объяснение кода листинга программы
- Включаем заголовочный файл iostream для работы с потоками ввода-вывода
- Используем пространство имен std для использования стандартных типов и функций
- Объявляем переменные:
- ss (целое) для хранения основания системы счисления
- k1 (целое) для хранения индекса первого символа в массиве ms
- k2 (целое) для хранения индекса последнего символа в массиве ms
- t (целое) для хранения точности вычислений
- num (двойное) для хранения числа, которое необходимо перевести
- num1 (целое) для хранения копии числа num
- i (целое) для использования в циклах
- ms (массив символов) для хранения перевода числа в символы
- znak (символ) для хранения знака числа
- Выводим сообщение и считываем число num с помощью функции cin
- Если число num отрицательное, меняем знак на минус и умножаем на -1
- Выводим сообщение и считываем основание системы счисления ss
- Выводим сообщение и считываем точность t
- Копируем число num в num1
- Вычисляем значение переменной num как разность между числом num и num1
- Начинаем цикл while, который выполняется пока num1 больше или равно ss
- Внутри цикла вычисляем остаток от деления num1 на ss и сохраняем его в переменной i
- Делим num1 на ss и обновляем значение num1
- Если i больше или равно 10, добавляем к i-10 символа от 'a' до 'f' и сохраняем в массиве ms
- Если i меньше или равно 9, добавляем к i+10 символы от '0' до '9' и сохраняем в массиве ms
- Уменьшаем значение k1 на 1
- Если num1 больше или равно ss, продолжаем цикл
- Если num1 меньше ss, выходим из цикла
- Добавляем знак минус к ms[k1]
- Увеличиваем значение k2 на 1
- Начинаем цикл while, который выполняется пока num не равно 0 и k2-11 меньше или равно t
- Внутри цикла умножаем num на ss и обновляем значение i
- Вычитаем i из num и обновляем значение num
- Если i больше или равно 10, добавляем к i-10 символа от 'a' до 'f' и сохраняем в массиве ms
- Если i меньше или равно 9, добавляем к i+10 символы от '0' до '9' и сохраняем в массиве ms
- Уменьшаем значение k2 на 1
- Если num не равно 0 и k2-11 меньше или равно t, продолжаем цикл
- Если num равно 0, выходим из цикла
- Выводим массив ms с помощью цикла for, начиная с k1 и заканчивая k2-1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д