Как реализовать checker для задач по С++?


Нужно написать программу (тестировщик) для проверки других программ на корректность вывода.

Например есть задача. Считать с клавиатуры два числа, поделить их и вывести в консоль результат.


Пример 1
Входные данные: 12 2
Выходные данные: 6
Пример 2
Входные данные: 5 0
Выходные данные: error

Вопрос как в программу(тестировщик) передать выходные данные другой программы ?


Ответы (2 шт):

Автор решения: Виктор

Если Вы используете QT Creator то можно поступить так (смотрите пример кода):

В файл проекта (*.pro) добавить строку:

QT       += core

В файле *.cpp метод для чтения ответа из консоли:

……………………..
#include <QProcess>
……………………..
void MainWindow::on_pushButtonReadSerialHDD_pressed()
{
    QProcess prc;
    prc.start("wmic", QStringList() << "diskdrive" << "get" << "model,name,serialnumber"); // это вызов системной команды wmic, но Вы можете подставить свою тестируемую программу и сформировать ей командную строку
    if (!prc.waitForStarted())
    {
        ui->textEdit->append("Process not started");
        return;
    }
    if (!prc.waitForFinished())
    {
        ui->textEdit->append("Process not finished");
        return;
    };
    QByteArray result = prc.readAll(); // Прочесть ответ тестируемой программы в консоль
    prc.close();

    // Здесь можете разместить код для анализа полученного результата

}
→ Ссылка
Автор решения: Danny

Можно результат возвращать в main'e из основной программы, а то что возвратили — посылать как аргументы в программу, что проверяет. Или как второй вариант — записать результат в файл в первой программе, а во второй — считать информацию с файла и анализировать.

→ Ссылка