2015-10-22 5 views
0

Я создал файл, который запускает метод Эйлера, и я не знаю, как получить переменные, рассчитанные для отображения в текстовом файле. Я хочу показать каждую итерацию y и x. Извините, но я очень неопытен с C++ и не могу понять, почему это не сработает. Если кто-то может помочь, он будет очень признателен.Вывод переменных в текстовый файл

#include<iostream> 
#include <math.h> 
#include<fstream> 
using namespace std; 
int main() 
{ 
    double h = (1.0/100.0); 
    double y = 0; 
    double x = 0; 


    for (x = 0; x <= 1; x = x + h) 
    { 
     y = y + h*(x*exp(3 * x) - 2 * y); 


     ofstream demoFile; 
     demoFile.open("texttexttext.txt"); 
     if (!demoFile) return 1; 
     demoFile << y << ' ' << x << endl; 


    } 


    demoFile.close(); 

    return 0; 

} 
+1

Что именно не работает? Не создан ли файл? – Downvoter

+0

Вы используете эту программу на своем диске, который содержит ОС? Иногда создание файлов и папок в некоторых местах может потребовать специального разрешения, поэтому программа не сможет создать файл – therainmaker

ответ

4

Держите эти линии вне своей петли.

ofstream demoFile; 
demoFile.open("texttexttext.txt"); 
if (!demoFile) return 1; 
+0

Да, я пробовал это, но потом получаю только окончательные значения x и y. Я хочу каждую итерацию .... – George

+0

Это дает мне ожидаемый результат @George – aerokite

+0

Вы уверены, что у вас есть оператор печати внутри цикла, а не после него? – FredK

4

Проблема, с которой вы сталкиваетесь, заключается в том, что вы открываете файл на каждой итерации, что заставляет вас перезаписывать файл на каждой итерации. Если вы переместите файл из цикла for, вы получите правильный текстовый файл.

#include<iostream> 
#include <math.h> 
#include<fstream> 
using namespace std; 
int main() 
{ 
    double h = (1.0/100.0); 
    double y = 0; 
    double x = 0; 
    ofstream demoFile("texttexttext.txt"); // no need to call open just open with the constructor 
    if (!demoFile) return 1; 

    for (x = 0; x <= 1; x = x + h) 
    { 
     y = y + h*(x*exp(3 * x) - 2 * y); 

     demoFile << y << ' ' << x << endl; 
    } 

    return 0; 
} 
+0

Решение проблемы Ahhhh. Огромное спасибо!! – George

Смежные вопросы