| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 391 人关注过本帖
标题:程序出现了我无法解决的问题!
只看楼主 加入收藏
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
结帖率:100%
收藏
 问题点数:0 回复次数:4 
程序出现了我无法解决的问题!

原代码如下:
#include<stdio.h>
#include<iostream.h>
const double density=7800.0;
const double To=20.0;
const double Te=1300.0;
const double h=250.0;
const double dx=0.005;
const double dt=10;
const int N=27;
double t[]={20.0,100.0,200.0,300.0,400.0,500.0,600.0,700.0,800.0,900.0};
double GetCp(double T)
{double Cp;
double c[]={485.0,502.0,518.0,535.0,560.0,594.0,600.0,629.0,686.0,698.0};
for(int i=0;i<10;i++)
{ if(T>0.0&&T<=t[0]) return Cp=c[0]-(t[0]-T)/t[0]*c[0];
else if(T>t[i]&&T<=t[i+1])
return Cp=c[i]+(T-t[i])*(c[i+1]-c[i])/(t[i+1]-t[i]);
}
}
double GetK(double T)
{double K;
double k[]={60.0,55.0,51.0,46.0,41.0,37.0,34.0,30.0,28.0,27.0};
for(int i=0;i<10;i++)
{ if(T>0.0&&T<=t[0]) return K=k[0];
else if(T>t[i]&&T<=t[i+1])
return K=k[i]-(T-t[i])*(k[i]-k[i+1])/(t[i+1]-t[i]);
}
}
void main()
{ int i;
double t0[N]={To},a1=0,b1=0,c1=0;
double r[N]={0.0},y[N]={0.0},x[N]={0.0};
double other1[N]={To},d[N]={To};
for( i=1;;i++)
{
double T1=t0[i];
double K=GetK(T1),Cp=GetCp(T1);
a1=-dt*K/(density*Cp*dx*dx);
b1=1+2*dt*K/(density*Cp*dx*dx);
c1=-dt*K/(density*Cp*dx*dx);
double a[N]={a1}; a[0]=a[1]=0.0;a[N-1]=2*a1;
double b[N]={b1}; b[0]=0.0;b[1]=1-a1*dx*h/K-a1;
double c[N]={c1}; c[0]=0.0;c[N-1]=0.0;
double other2[N]={0.0};other2[1]=dt*h*Te/(density*dx*Cp);
for(int i=0;i<N;i++)
d[i]=other1[i]+other2[i];
int k;
r[1]=c[1]/b[1];y[1]=d[1]/b[1];
for( k=2;k<N-1;k++)
{
r[k]=c[k]/(b[k]-r[k-1]*a[k]);
y[k]=(d[k]-y[k-1]*a[k])/(b[k]-r[k-1]*a[k]);
}
y[N-1]=(d[N-1]-y[N-2]*a[N-1])/(b[N-1]-r[N-2]*a[N-1]);
x[N-1]=y[N-1];
t0[N-1]=x[N-1];
for(k=N-2;k>=1;k--)
{x[k]=y[k]-r[k]*x[k+1];other1[k]=x[k];t0[1]=x[1];}
if(t0[1]>=1200) goto exit;
}
exit:
cout<<"the temperature of the surface reaching the 1200 need "<<i<<"seconds"<<endl;

}
编译结果:
Compiling...
heattransfer.cpp
E:\我的文件\c++源文件\练习\heattransfer\heattransfer.cpp(19) : warning C4715: 'GetCp' : not all control paths return a value
E:\我的文件\c++源文件\练习\heattransfer\heattransfer.cpp(28) : warning C4715: 'GetK' : not all control paths return a value
Linking...

heattransfer.exe - 0 error(s), 0 warning(s)
而且总是出现这个对话框


2006-11-20 20:08
朦朦胧胧
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-19
收藏
得分:0 

方法GetCp欠妥当,for循环里:

if(T>0.0&&T<=t[0])//条件1
return Cp=c[0]-(t[0]-T)/t[0]*c[0];
else if(T>t[i]&&T<=t[i+1])//条件2
return Cp=c[i]+(T-t[i])*(c[i+1]-c[i])/(t[i+1]-t[i]);

如果条件1和条件2都是false的,函数该返回什么数呢,也许你觉得总会满足一个条件的.但是编译器并不知道啊,所以它
warning你not all control paths return a value


2006-11-20 21:20
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 
只是警告而已,可以无视

2006-11-21 11:22
chenqianghao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-21
收藏
得分:0 

同意二楼观点


2006-11-21 14:37
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
收藏
得分:0 

这个程序执行不出来,出现中断对话框!


2006-11-21 15:26
快速回复:程序出现了我无法解决的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021292 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved