Пожалуйста, имейте в виду, что я довольно новичок в C ++, и это просто программа, которую я должен сделать для своего класса. Думаю, я понимаю, как бы я это сделал. Я просто не уверен, что поставить в качестве условия контроля для цикла while. Я должен быть в состоянии преобразовать любое восьмеричное заданное число, так как узнать, когда я на первом числе и должен остановиться? Я перемещаю числа вперед справа налево, используя увеличивающиеся единицы измерения% 10 (или% 10,% 100,% 1000), но как мне узнать, когда я должен прекратить это делать? Как и для числа 112, мне нужно было бы сделать% 10,% 100 и% 100, но не после этого.
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
cout <<"Please enter the octal number to be converted: " <<
int octal;
cin >> octal;
int remainder = 0;
int modular = 10;
int conversionToDecimal = 0;
while(modular < ***********)
remainder = octal%modular;
if (remainder < 10)
{
conversionToDecimal = conversionToDecimal + (remainder *(int)pow(8.0,count));
count = 0;
modular = modular*10;
}
else
{
remainder = remainder/10;
count++;
}
Очевидно, что программа не завершена, это просто код, который я получил, когда обнаружил свою проблему. Я положил * где мне нужна помощь с кодом. Спасибо! Короче говоря, как я должен контролировать свою петлю, чтобы не сойти с передней части восьмеричного числа?
Вы можете использовать тот же способ, что и при преобразовании числа в строку десятичных цифр: массив с цифрой для каждого индекса. Для каждой итерации вы берете модуль 10 и сохраняете эту цифру, а затем делите на 10. Когда число становится равным нулю (в конце цикла), все готово.
Затем извлекайте по одной цифре из массива и умножьте свое «общее» на 8, добавьте текущую цифру. Когда у вас больше не осталось цифр, все готово.
Я оставлю это вам, чтобы написать настоящий код для этого — в конце концов, вы тот, кто изучает программирование — я занимаюсь этим более 30 лет.
Других решений пока нет …