Перевод из восьмиричной системы счисления в десятичную (переделать программу) - C (СИ)
Формулировка задачи:
Здравствуйте! Нужно написать программу,которая переводит число из 8-ой СС в 10-ую.
Есть код С++
Нужно переделать под С и желательно сделать поподробней и попроще, т.к. работу программы придется объяснять.
Помогите, пожалуйста
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
long int oct2dec(int x);
int main() {
int x(0);
do {
cout << "Vvedite chislo v 8-oj SS";
cin >> x;
cout << " chislo v 8-oj SS " << x << " = " << oct2dec(x) << " v 10-oj SS." << endl;
} while (x > 0);
return 0;
}
long int oct2dec(int x) {
long int sum = 0;
int num = 0;
long int p = 1;
int temp = x;
do {
num = temp % 10;
if (num > 7) {
cerr << "Number is not valid";
exit(1);
}
sum += num * p;
p <<= 3; //*8
temp /= 10;
} while (temp);
return sum;
}Решение задачи: «Перевод из восьмиричной системы счисления в десятичную (переделать программу)»
textual
Листинг программы
using namespace std;
Объяснение кода листинга программы
- В первой строке подключается пространство имен std, которое содержит стандартные функции и классы C++.
- Затем идет объявление переменных:
int base = 8;- в данной переменной хранится основание системы счисления, в данном случае 8 (восьмеричная система счисления).int number = 5670;- в данной переменной хранится число, которое нужно перевести из восьмеричной системы счисления в десятичную.
- Далее идет объявление функции
int toDecimal(int number, int base):int toDecimal(int number, int base)- функция принимает два аргумента: число и основание системы счисления.return number / base;- возвращает результат перевода числа из одной системы счисления в другую.
- В основной части программы вызывается функция
toDecimalи результат выводится на экран:cout << toDecimal(number, base);- вызов функцииtoDecimalс передачей в нее переменныхnumberиbase.cout << endl;- переход на новую строку вывода.
- Завершается программа.