Всего два дня назад я, по-видимому, нашел решение, чтобы моя программа работала и работает правильно. Я говорю, по-видимому, потому, что сегодня я пытаюсь использовать его, но он больше не работает. Я не делаю никаких изменений в коде, поэтому я не понимаю, по какой причине он больше не выполняется. Теоретически эта программа должна открыть .dat-файл, прочитать и разобрать его, извлекая только тот столбец, который мне нужен, в этом случае второй. Как только exctract столбца, он будет вычислять среднее из данных с помощью набора из 120 элементов, используя массив. Два дня назад он работал правильно, сегодня он не дает никакого вывода, а функции отладки не показывают никаких ошибок. код заключается в следующем:Почему эта программа не дает выход?
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
#define FATAL(MSG) do { \
std::cerr << "Errore: " << MSG << '\n'; \
exit(1); \
} while (false)
int main()
{
std::ifstream fin ("P01-05 tensione di vapore di riferimento fino 180°C.dat");
if (fin.is_open())
{
std::ofstream fout("tmean.dat");
if (fout.is_open())
{
fout << "Tmean\n";
std::string line;
while (getline(fin, line))
{
const int group_size = 120;
double temp[group_size];
double total = 0;
for (int i=0; i < group_size; ++i)
{
if (getline(fin, line))
{
std::istringstream ss(line);
double time;
if (ss >> time >> temp[i])
total += temp[i];
else
FATAL("unable to parse 2 doubles from line '"
<< line << "' for [" << i << ']');
}
else
// will rarely happen after checking !eof()
FATAL("failed to read needed line from file for ["
<< i << ']');
}
double tmean = total/group_size;
fout << tmean << '\n';
}
}
else
FATAL("could not open output file.");
fout.close();
}
else
FATAL("non si puo aprire il file.");
fin.close();
return 0;
}
Пожалуйста, прочитайте [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). – GingerPlusPlus
Скомпилируйте свою программу со всеми предупреждениями и информацией об отладке (например, 'g ++ -Wall -Wextra -g', если вы используете [GCC] (http://gcc.gnu.org/) ....), затем ** используйте отладчик * * (например, 'gdb') для запуска вашей программы шаг за шагом и т. д. –
Имеет ли в имени файла такое большое количество пробелов? Если он есть, он все еще доступен из вашего текущего каталога, (поскольку вы не используете абсолютный путь). –