Проблема с записью в значений в dat файл

183
30 января 2019, 23:10

Мне нужно построить график функции распределения. Для этого я решил использовать GnuPlot.
В Excel пробовал, хорошо, но ступеньки плохо выраженные из-за малого количества значений.

Делаю по видео, и при записи в *.dat файл записывает только первую строку, а не все значения.

Как исправить?

Вектор arrсодержит концы интервалов, HLP вычисленные вероятности. Делаю данное из-за малого количества точек для построения.

cout << "____________________________" << endl;
    float x = float(arr[0]);
    for (int i = 1; i<arr.size(); i++)
    {
        if ((arr[i]>x) && (x >= arr[i - 1]))
        {
            ofstream outval;
            outval.open("tst.dat", ios::app);
            outval << x << " " << HLP[i-1] << endl;
            cout << "---------------------------" << endl;
            cout << x <<"  "<< HLP[i - 1] << endl;
        }
        x += 0.1;
    }
Answer 1

Ой. Смотрите, вы прошлись по циклу, нашли, где находится x, в каком интервале, и идете себе дальше, увеличив x на 0.1. Вы уверены, что он при этом попадет в один из следующих интервалов?

Вам нужно цикл по x, и для каждого значения x искать интервал, куда он попадает.

Answer 2

Собственно спасибо Harry

1) необходимо было вынести открытие файла за цикл, так как файл перезаписывался.

Короче сделал так:

cout << "____________________________" << endl;
    float x = float(arr[0]);
    ofstream outval;
    outval.open("tst.dat", ios::app);
    while (x != arr[arr.size() - 1])
    {
        for (int i = 1; i < arr.size(); i++)
        {
            if ((arr[i] > x) && (x >= arr[i - 1]))
            {
                outval << x << " " << HLP[i - 1] << endl;
                cout << "---------------------------" << endl;
                cout << x << "  " << HLP[i - 1] << endl;
            }
        }
        x += 0.1;
    }
READ ALSO
Стандартные методы (функции) для работы с массивами в C++

Стандартные методы (функции) для работы с массивами в C++

Этот вопрос уже наверняка поднимался не раз, но что-то я не могу найти конкретного ответа да или нетУчу C++, возник вопрос: существуют ли стандартные...

186
Как можно скомпилировать C++ Linux/Android/etc программу из-под Windows?

Как можно скомпилировать C++ Linux/Android/etc программу из-под Windows?

Вопрос в заголовкеКак можно скомпилировать бинарник для использования на Linux/Android/etc, используя Windows? Для сборки использую make, но, вроде, gcc не умеет...

238
Тип bool в шейдерах DirectX11

Тип bool в шейдерах DirectX11

Имею DirectX11 и небольшой движокЧто хочу сделать - отправить в вершинный шейдер структурный буфер собственного типа(в типе единственный член,...

185