Блог пользователя solomax

Автор solomax, 10 лет назад, По-русски

Я сейчас пытаюсь написать генератор тестов на C++ с использованием библиотеки testlib. Как можно вывести тесты, создаваемые генератором, в файлы?

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

При запуске генератора просто перенаправьте стандартный вывод в файл: generator.exe >test.in

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    У меня программа генерирует несколько тестов сразу, поэтому мне надо по строке на файл записывать.

    • »
      »
      »
      10 лет назад, # ^ |
        Проголосовать: нравится +8 Проголосовать: не нравится

      В архиве с testlib-0.9.5 есть пример в generators/multigen.cpp:

      /*
       * It is another type of generators. It writes several files named 
       * as test indices. 
       *
       * For example, this generator writes 10 files (tests) from 1 to 10.
       * This type of generators supported by Polygon too, but I believe 
       * that stdout-generators are more preferred.
       *
       * The generator for A+B problem, generates 10 tests where each 
       * number is between 1 and 100, and tests grow with indices.
       */
      
      #include "testlib.h"
      #include <iostream>
      
      using namespace std;
      
      void writeTest(int test)
      {
          startTest(test);
          
          cout << rnd.next(1, test * test) 
              << " " << rnd.next(1, test * test) << endl;
      }
      
      int main(int argc, char* argv[])
      {
          registerGen(argc, argv, 1);
      
          for (int i = 1; i <= 10; i++)
              writeTest(i);
          
          return 0;
      }
      

      Правда, почему-то файлы называются 1, 2, ..., 10, а не 01... или 001... .

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Ну, с форматированием названий у меня Total Commander разберётся. Спасибо большое!