Перевод числа из десятичной системы счисления на C++...
Вот, как всегда попросили помочь. На C++ решалась традиционная для обучения задача перевода чисел из десятичной системы счисления в систему с любым основанием от 2 до 9.
Решить нужно было без строк или указателей, которые ещё не "проходились". Что ж, зато "проходились" массивы.
Так что решить эту "суперзадачу", учитывая красоту и выразительность языка Си, можно буквально в 2 строки и 1 минуту (ведь само решение - содержимое цикла do ... while
, остальное - интерфейс):
/*Перевод числа N из десятичной системы счисления в систему с основанием R от 2 до 9*/ #include <iostream.h> #include <math.h> void main () { int l=0,s[80],n,r; cout<<"N>0: "; cin>>n; cout<<"R in [2,9]:"; cin>>r; do { s[l++]=n%r; n/=r; } while (n!=0); for (int i=l-1; i>-1; i--) cout << s[i]; cout << endl; }
Здесь сначала вводится положительное целое число N
, затем - основание системы счисления R
, в которую нужно перевести число.
С чем связано ограничение "от 2 до 9"? Просто при больших основаниях понадобятся строки,
наша-то основная система десятичная и "цифр" A, B, C, ...
в ней нет.
Моя реализация "в обе стороны" на Паскале есть вот тут, там же ссылки на другие реализации.
19.11.2011, 17:54 [21999 просмотров]