このエラーは math.h ファイルの 36 行目を示しています。SRK.cpp はヘッダーを必要とする唯一のファイルですが、ヘッダー ファイルに含めることは理にかなっているように思われます。明らかに何かがおかしくなっています (個人的にはタイプミスやその他の単純な間違いがあると思いますが、エラーは C++ に含まれているヘッダー ファイルを指しているので、どこを見ればよいかわかりません)。
header.h
#ifndef HEADER_H
#define HEADER_H
#include <math.h>
double reducedP(double P, double Pc);
double reducedT(double T, double Tc);
double SRK(double Tr, double Pr, double acc);
#endif
main.cpp
#include <iostream>
#include "header.h"
using namespace std;
int main()
{
double T = 0;
double Tc = 0;
double Tr = 0;
double P = 0;
double Pc = 0;
double Pr = 0;
double acc = 0;
double Z = 0;
cout << "Enter Temperature: ";
cin >> T;
cout << "\n";
cout << "Enter Pressure: ";
cin >> P;
cout << "\n";
cout << "Enter Critical Temperature: ";
cin >> Tc;
cout << "\n";
cout << "Enter Critical Pressure: ";
cin >> Pc;
cout << "\n";
Tr = reducedT(T,Tc);
Pr = reducedP(P,Pc);
cout << "Reduced T,P\t\t\t" << Tr << "\t\t" << Pr <<"\n";
cout << "Enter accentric factor: ";
cin >> acc;
cout << "\n";
Z = SRK(Tr, Pr, acc);
cout << "Z is " << Z << "\n";
return 0;
}
SRK.cpp
double SRK(double Tr, double Pr, double acc)
#include <math.h>
{
double alpha;
double phi = 1;
double epsilon = 0;
double omega = 0.08664;
double psi = 0.42748;
double Zc = 1/3;
double a = (1+(0.480 + 1.574*acc - .176*acc*acc)*(1-sqrt(Tr)));
alpha = pow(a,2);
cout << "Alpha is " << alpha << "\n";
double beta = omega*(Pr/Tr);
cout << "beta is " << beta << "\n";
double q = (psi*alpha)/(omega*Tr);
cout << "q is " << q << "\n";
double Z = 0;
double test = 0;
double Z_init = 1;
while(fabs(Z_init-test)>.00001)
{
Z = 1 + beta - (q*beta)*((Z_init - beta)/((Z_init)*(Z_init+beta)));
cout << "\n" << Z_init << "\n";
test = Z_init;
Z_init = Z;
}
return (Z);
}