从txt文件中导入数据代入到公式中计算
这个博客是用来记录的
好久没有更新过博客了,前几天一个同学让我帮忙写一个程序用来计算,写完后顿时发觉当时过程控制老师说的是真的没毛病,有些计算如果很复杂,而且数据量比较多的话,一个一个计算实在是太复杂了,写程序就让计算简单很多了
先看他发给我的公式
参数有三个,分别是B,Z和A
这三个参数通过txt文件导入,要求计算出Rc的值
下面是源代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include <math.h>
using namespace std;
int main()
{
float arr1[64];
float arr2[64];
float arr3[64];
int i = 0;
const float pi = 3.14159265;
ifstream myfile("C:\\data.txt");//文件路径和文件名,最好不要包含中文
if(!myfile){
cout << "error!!";
exit(1);
}
else
{
char str[64] = {0};
while(!myfile.eof())
{
myfile.getline(str, 64);//分别将三列数据读取到三个数组中,每行的三个数据使用空格隔开
sscanf(str, "%f %f %f", &arr1[i], &arr2[i],&arr3[i]);
float a = pow(arr3[i], 0.66666666);//pow是计算次方的函数
float b = pow(arr2[i], 0.33333333);
float c = pow(arr1[i], 2);
float result = 1.631*b*(1 + 5 * c / 8 / pi)*(1 + 0.062*(arr3[i] / (arr2[i] * (1.98 + 0.0155*a)) - 1));
cout << result << endl;
i++;
}
}
system("pause");
};
data.txt的数值
得到的结果是
此外,在编译过程中会遇到这样的问题
原因是计算次方的pow函数的第一个参数需要是double型的,但是我将float换成double时,编译不会提示警告,但a和b的值一直是1,结果也会产生错误,忽略这个警告得到的值得精确度也达到了0.001,再加上他需要将这些值作成曲线图,是不影响最终的结果的,但是最终还是个问题,有待解决