程序问题错误:不兼容

时间:2018-04-24 17:24:12

标签: c++ c computer-science

首先,我正在做一个程序,有点简单的长程序,这里是完整的细节:

  

真实气体的P-v-T关系可以采用多种形式。最简单的   关系是理想的气体方程和范德瓦尔斯方程。   这些关系适用于过热蒸汽。文件   “pvt.txt”包含过热蒸汽的P-v-T数据(10 - 800 kPa)   温度范围为200 oC至1200 oC,由此获得   蒸汽表。

     

编写C程序以读取蒸汽表数据“pvt.txt”。在C中   程序,估算压力范围10的蒸汽密度   至800 kPa,温度范围200 oC至1200 oC,

     

(1)使用理想气体关系:        m3 / kg,其中R = 0.4615 kJ / kgK,T是温度[K],P是压力[kPa]。

     

(2)使用范德瓦尔斯方程:

     

其中R = 0.4615kJ / kgK,T是温度[K],P是压力   [千帕。常数来自       其中Pcr = 22060kPa,Tcr = 647.1K。

     

在每种情况下,计算得到的百分比误差   估计密度如下:错误= x 100%提交报告   必须包括:   1.介绍,算法或流程图,C程序,以及蒸汽表的密度。   2.使用理想气体方程时的估算密度表。   3.使用理想气体方程时的百分比误差表。   4.使用范德华方程时的估计密度表。   5.使用范德华方程时的百分比误差表。   6.讨论和结论。注意:密度是特定体积的倒数,

     

pvt.txt:
  pvt txt

程序的第一步已经完成了,但我遇到第二步问题(使用范德瓦尔斯方程)这里是我写的

#include <stdio.h>
#include <math.h>
main(){
    FILE *f1;
    FILE *f2;

    f1 = fopen("pvt.txt","r");
    f2 = fopen("second.txt","w");

     int i,j;
     float v[9][6],vdr[9][6],edr[9][6]; //V
     float p[9]={10,50,100,200,300,400,500,600,800}; //Pressure
     float T[6]={200,400,600,800,1000,1200}; //Temperature
     float a,b,Pcr=22060,Tcr=647.1,R=0.4615,v0,diff;


    a=(27*pow(R,2)*pow(Tcr,2))/(64*Pcr);
    b=(R*Tcr)/(8*Pcr);


    //                  //

    /*Read input file for v from steam table*/
     for(i=0;i<=8;i=i+1)
       fscanf(f1,"%f %f %f %f %f %f",&v[i][0],&v[i][1],
            &v[i][2],&v[i][3],&v[i][4],&v[i][5]);

    /*Write v steam table to output file*/
    fprintf(f2, "The V Steam Values = \n");
     for(i=0;i<=8;i=i+1)
       fprintf(f2,"%f %f %f %f %f %f \n",v[i][0],v[i][1],
            v[i][2],v[i][3],v[i][4],v[i][5]);

            //          //
            while(diff>0.001)
                {
                     for(i=0;i<=8;i=i+1)
                        for(j=0;j<=5;++j)
                            v0=v;
                            v=b+ 0.4615*(T+273.15)/(p+a/(v0*v0));
                            diff=fabs(v-v0)/v0;
       }
/*Write v using VDR to output file*/
        fprintf(f2, "The V using VDR Values = \n");
     for(i=0;i<=8;i=i+1)
       fprintf(f2,"%f %f %f %f %f %f \n",v[i][0],v[i][1],
            v[i][2],v[i][3],v[i][4],v[i][5]);

}

从“float(*)[6]'类型中分配类型'float'时,每次都说错误不兼容类型在这些方面:

while(diff>0.001)
                    {
                         for(i=0;i<=8;i=i+1)
                            for(j=0;j<=5;++j)
                                v0=v;
                                v=b+ 0.4615*(T+273.15)/(p+a/(v0*v0));
                                diff=fabs(v-v0)/v0;
           }

我该怎么做才能解决它?

此处还提供了一个程序提示:

/*Solving van der waals equation using trial-and-error
  p : kPa, t : Celcius, v : m^3/kg  */

#include <stdio.h>
main()
{
     float a,b,diff,v,vo,p,t;

     a=27*0.4615*0.4615*647.1*647.1/(64*22060.0);
     b=0.4615*647.1/(8*22060.0);

/*some test values*/

     p=10;
     t=200;

/*guess a value for v, Let vo=v and calculate a new
  v. If relative difference (diff) is greater than
  some tolerance, start new calculations */

     diff=100;
     v=10.0;
     while(diff>0.001)
       {vo=v;
        v= b+ 0.4615*(t+273.15)/(p+a/(vo*vo));
        diff=fabs(v-vo)/vo;
       }

     printf("%f\n",v);

     system("pause");
}

0 个答案:

没有答案