Подскажите пожалуйста, почему я могу считывать данные с файла, но значения переменных dblx, dblResult не записываются в файл. Не могу найти ошибку. Заранее спасибо за помощь. текстовый файл
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
int main(void)
{
double dbla, dblb, dbld, dblx, dblResult;
int ic;
fstream stream;
stream.open("data.txt", ios::app | ios::out);
if (!stream)
{
cout << "Error while opening file";
Sleep(2000);
exit(1);
}
stream >> dbla;
stream >> dblb;
stream >> ic;
stream >> dbld;
do {
cout << "Enter the value of variable x : ";
cin >> dblx;
try
{
if (dblx == 0)
throw dblx;
stream << dblx;
dblResult = (dbla - dblb * ic) / (dbld * dblx);
stream << dblResult;
}
catch(double dblx)
{
cout << "Dividing by zero!!!";
}
} while (1);
stream.close();
system("pause");
return 0;
}
Тебе надо завести два потока: input для чтения данных и output для вывода (естественно, это должны быть разные файлы). Кроме того советую следующие правки:
убрать include <string> (ты всё равно не пользуешься им);
убрать using namespace std; и писать std::cin, std::cout и т.д.;
убрать void из объявления main: в C++ это лишнее;
не использовать Sleep и system("pause") и, соответственно, убрать #include <windows.h>. См. Использование system("pause")
бесконечный цикл организовывать с помощью for ( ; ; );
заменить try … catch на if …{ … exit … };
если значение, присваиваемое dblResult, используется однократно, то сразу выводить его в поток, а переменную dblResult убрать;
return 0; можно опустить: mainвозвращает 0 по умолчанию.
А зачем же вы пытаетесь читать из файла, открытого на запись?
Файл после этого переходит в состояние ошибки и все дальнейшие действия с ним бессмысленны.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей