Как реализовать 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();
// Здесь можете разместить код для анализа полученного результата
}
Можно результат возвращать в main'e из основной программы, а то что возвратили — посылать как аргументы в программу, что проверяет. Или как второй вариант — записать результат в файл в первой программе, а во второй — считать информацию с файла и анализировать.