2014-10-20 5 views
-1

Итак, мне была предоставлена ​​программа для создания, которая включает в себя чтение внешнего файла, который выводит изображение, похожее на поле xy, которое я смог произвести так сильно, но я застрял в тупике. .. Я удалил # поэтому библиотеки могут быть считаныОбласть под кривой с использованием рекурсивного

файл данных содержит

x values y values 
20.00  0 
20.02  15 
20.04  27 
20.06  39 
20.08  54 
20.10  65 
20.12  75 
20.14  84 
20.16  93 
20.18  101 
20.20  108 
20.22  113 
20.24  116 
20.26  115 
20.28  112 
20.30  107 
20.32  100 
20.34  92 
20.36  83 
20.38  74 
20.40  64 
20.42  53 
20.44  39 
20.46  27 
20.48  15 
20.50  0 

/* This program reads numbers from a file. */ 
#include<iostream> 
#include <fstream> 
#include <iomanip> 
#include <cmath> 

using namespace std; 

int main() 
{ 
    ifstream inFile; 
    int x1, x2, y1, y2; 
    //Open the File. 

    inFile.open("xydata.txt"); 

    //Read the numbers from the file 

    inFile >> x1; //x1 =20 
    inFile >> y1; // y1 = 0 
    inFile >> x2; // x2 =20.02 
    inFile >> y2; //y2 = 15 

    //Close File. 
    inFile.close(); 




//Calculate the total Area underneath the curve 


    double h, b, a, trap, final_trap; 
    a = (x2 - x1); 
    b = (y2 - y1); 
    trap = ((a+b)/2); 
    final_trap = trap*b; 


    cout<<final_trap<<endl ; 

    return 0; 
} 



/* 

// Writing data into a File 
int main() 
{ 
ofstream outputFile 
outputFile.open("xydata.dat") 

cout << "Now writing data into the file" <<endl; 

//Writing Area into the file 
outputFile << 

//close this file 
outputFile.close(); 
cout << "Done." << endl; 
return 0; 

*/ 
+0

Что вы хотите сказать? –

+0

Вы пытаетесь прочитать целые числа, но ваш файл содержит действительные числа. ** ДОБАВИТЬ: ** Вам нужно проверить правильность чтения значений, проверив флаги потока. – Galik

ответ

0

Вот вся программа (но чтение из стандартного ввода - Я уверен, что вы можете исправить это):

#include <iostream> 
using namespace std; 
int main() { 

    bool first_iteration = true; 
    float area = 0.0; 
    float ox, oy, x, y; 
    while (cin>>x && cin>>y) { 
    if (!first_iteration) 
     area += (x-ox) * (y+oy)/2.0; 
    ox=x; oy=y; 
    first_iteration=false; 
    } 
    cout << "Area is " << area << endl; 
} 

Если у вас действительно есть эти метки столбцов во входном файле, вам придется есть их с самого начала.

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