使用递归的曲线下面积

Area under the curve using recursive

本文关键字:曲线 递归      更新时间:2023-10-16

因此,我得到了一个要创建的程序,该程序涉及读取一个外部文件,该文件输出一个类似于x-y字段的图像,我能够为其生成如此多的图像,但我陷入了死胡同。。。我删除了#以便可以读取库

数据文件包含

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;
*/

以下是整个程序(但从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;
}

如果输入文件中确实有这些列标签,那么一开始就必须吃掉它们。