2015-12-27 3 views
-1

Я написал код для создания двух случайных чисел с заданным диапазоном. Я хочу написать выходной результат (два случайных числа). В файле сценария, я хочу, чтобы написать вывод в одной строке для каждой итерации, как мой ожидаемый результатКак написать вывод в текстовый файл в C++ по сценарию

Мой выходной ток

1 0 
1 0 
2 1 
2 3 
0 0 //output of second iteration 
1 1 
2 2 
1 3 

Мой ожидаемый результат

1 0 0 0 
1 0 1 1 
2 1 2 2 
2 3 1 3 

Это мой полный код

#include <iostream> 
#include <stdlib.h> 
#include <fstream> 
#include <time.h>  /* time */ 
#define random(x) (rand()%x) 

int main(int argc, char **argv) { 
    unsigned int time_ui = static_cast<unsigned int>(time(NULL)); 
    srand(time_ui); 
    int number1; 
    int number2; 
    int range=atoi(argv[1]); 
    number1 = random(range); 
    number2 = random(range); 
    //std::cout<< number1 << "\t" <<number2; 
    std::ofstream myfile; 
    myfile.open ("report.txt", std::ios::app); 
    myfile << number1 << "\t" <<number2<<'\n'; 
    myfile.close(); 
    return 0; 
} 

Мой файл скрипт

#!/bin/bash 

a=1 
iter=0 
for ((iter; iter <= 1; iter++)) 
do 
    a=1 
    while [ $a -lt 4] 
    do 
     ./random_num $a 
     a=`expr $a + 1` 
    done 

done 
+0

Любая специальная причина, по которой вы хотите как C++-программу, так и сценарий оболочки? Почему бы не переместить цикл из сценария оболочки в C++? Таким образом, вы можете сохранить значения в памяти и писать только после всех прогонов. – Robert

+0

Причина в том, что я могу вызвать random_num кодом вместо использования терминала – Jame

+0

Ваш опубликованный код не соответствует опубликованному выводу. 1. Код C++ записывается в файл, а не в стандартный вывод. 2. Скрипт имеет синтаксическую ошибку и вызывает «random_num» всего три раза за внешнюю итерацию. Удалите эти несоответствия. – Armali

ответ

0

Обратите внимание, что в коде C++ указан символ новой строки, что делает невозможным «unoutput». Я бы предложил переместить логику из bash в код C++ или наоборот. У C++ есть такие опции, как setfill, которые могут помочь вам контролировать это.

+0

Вы можете увидеть мой код и изменить его, помогите мне – Jame

+0

Одна вещь, которую вы можете сделать, это создать массив векторов. На каждой итерации добавьте числа в конец векторов. Например, поскольку вы генерируете пару чисел 4 раза, массив будет иметь длину 4. По мере прохождения итераций добавьте вновь созданные случайные числа в соответствующий вектор. В самом конце, итерация элементов вектора для печати вкладки разделены, и новая строка разделена для массива. – Untitled123