使用递归的曲线下面积

时间:2014-10-20 07:16:36

标签: c++ function recursion

所以我得到了一个创建程序,涉及读取一个外部文件,该文件输出类似于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;

*/

1 个答案:

答案 0 :(得分:0)

这是整个程序(但是从stdin读取 - 我相信你可以解决这个问题):

#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;
}

如果您确实在输入文件中有这些列标签,则必须在开始时使用它们。