программа с использованием рекурсии и контейнера list на языке C++ Изменить/упростить код
#include
using namespace std;
int translateNumberSystem(int num, int p)
{
if (num == 0)
{
return 0;
}
return (num % p + 10 * translateNumberSystem(num / p, p));
}
int main()
{
int num = 0;
cout << "Введи натуральное число: ";
cin >> num;
int p = 0;
cout << "\nВведи систему счисления (от 2 до 9): ";
cin >> p;
while (p < 2 || p > 9)
{
cout << "\nНужно ввести сист. счисления от 2 до 9: " << endl;
cin >> p;
}
int result = translateNumberSystem(num, p);
cout << "Число " << num << " в системе счисления " << p
<< " равно: " << result;
return 0;
}
Ответы
#include <iostream>
#include <vector>
using namespace std;
void translateNumberSystem(int num, int p, vector<int>& result)
{
if (num == 0)
{
return;
}
translateNumberSystem(num / p, p, result);
result.push_back(num % p);
}
int main()
{
int num = 0;
cout << "Введите натуральное число: ";
cin >> num;
int p = 0;
cout << "\nВведите систему счисления (от 2 до 9): ";
cin >> p;
while (p < 2 || p > 9)
{
cout << "\nНужно ввести сист. счисления от 2 до 9: " << endl;
cin >> p;
}
vector<int> result;
translateNumberSystem(num, p, result);
cout << "Число " << num << " в системе счисления " << p << " равно: ";
for (int i = result.size() - 1; i >= 0; i--)
{
cout << result[i];
}
return 0;
}