Хороший способ начать - отделить «бизнес-логику» от «логики отображения». Таким образом, вы можете сохранить бизнес-логику такой же, но переписать части, которые отображают ее на экране, вместо записи в стандартный вывод. Однако, если в вашем приложении они уже смешаны, их не всегда легко выделить; в идеале вы хотите начать с развязанной логики.
Кроме этого, вы захотите использовать std :: cout для записи в консоль и скомпилировать приложение как консольное приложение вместо приложения с графическим интерфейсом.