"Перевод" кода с Python на C++

Рейтинг: -4Ответов: 1Опубликовано: 10.05.2023

Имеется следующий код для перевода чисел из десятичной системы счисления на другие (2-10) на Python:

num = int(input())
notation = int(input())
result = int(input())

while num > 0:
    result += str(num % notation)
    num //= notation

print(result)

Попробовал сделать его на C++. Само собой ничего не вышло в связи с неопытностью:

#include <iostream>

int main()
{
   int num, notation;
   char result;
   std::cin >> num;
   std::cin >> notation;

   while (num > 0)
   {
       result = result + char(num % notation);
       num = num / notation;
   }
   std::cout << r << std::endl;
}

Выдает следующие ошибки:

Ошибка при запуске

Код был написан Python'истом, поэтому мог взять какие-либо вещи из Python.

И, если не сложно, не могли бы вы оставить какие-либо ресурсы для изучения C++?

Ответы

▲ 0Принят

В представленном коде есть несколько проблем:

  • Вероятно, вы хотели использовать переменную result, но в цикле вы обращаетесь к переменной r. Необходимо заменить r на result в выражении std::cout << r << std::endl;.

  • Вы пытаетесь присвоить символ числу, используя result = result + char(num % notation);. Это неверное использование символа. Для получения символа из числа, вам нужно преобразовать его с помощью таблицы символов ASCII или использовать функцию std::to_string() для преобразования числа в строку.

Вот исправленный код:

#include <iostream>
#include <string>

int main()
{
   int num, notation;
   std::string result;
   std::cin >> num;
   std::cin >> notation;

   while (num > 0)
   {
       char digit = '0' + (num % notation);
       result = digit + result;
       num = num / notation;
   }
   std::cout << result << std::endl;
}

В этом исправленном коде используется переменная result типа std::string для хранения результата в виде строки. В цикле мы получаем остаток от деления и преобразуем его в символ, затем добавляем этот символ в начало строки result. В конце выводим полученный результат.