毕业设计上的一个问题 急 help (200分)

  • 主题发起人 我是一个大菜鸟
  • 开始时间
to tingjie: 呵呵,厉害!!!我是菜鸟,看得我的头好大哦。 :)
其中我的公式在那里的意思就是当温度ATemp=150 的时候,焓值就等于ATemp=200时的焓值减去ATemp=100时的焓值除(200-100)再乘(150-100),再加上ATemp=100时的焓值。
也就 h150=h100+(h200-h100)*(150-100)/(200-100),这是一个线性性分度。在这里h100与h200都是知道的。
GetH(二氧化炭,150)=169+(357-169)*(150-100)/(200-100)=263
不过我编译不好这东东,也许是我忽略了某些东西吧,你可以编译好给我么?
及:焓(han)英语(enthalpy)。:)
 
我知道你的意思,我有些与省略了没写,你当然编译不好了,本想提一个思路给你的,
还要我亲自完成,好人难做呀![:)]你有多急?
 
我用记事本写的,所有有些问题[:D]。
写完整后我会贴上去。
 
明天给老师初稿,我在这里卡了三个星期了。
:(
我的QQ号码是:65480529
 
晕了
声名一个 3维数组就行了啊
高那没复杂干什么啊!!!
const
nx:=100;
nt:=200;
var
a1:array [1..nx,1..NT ,1..2] of double ;
procedure input(const i :integer)
var
j:integer;
begin
for j:=1 to i do begin
a1[i,j,1]:=y[j] ;
a2[i,j,2]:=h[j];
end;
end;
function GetH(const i:integer,const t: double)double;
var
j:integer;
begin
for j:=1 to NT do begin
if t>a1[i,j,1] then begin
result:=a1[i,j,2] +(a1[i,j+1,2] -a1[i,j,2] )/(a1[i,j,1] -a1[i,j,1] )
break

end;
end;
end;
 
呵呵,复杂,我喜欢。[8D]
 
tingjie :
先分析一下数据啊! 就 2*n*m个 ! 你还用指针 我晕啊!

 
[:D][:D][:D][:D]
呵呵,请大家多指教!!!
如有好方法,洗耳恭听。
[:)][:)][:)][:)]
 
源代码来了:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;


pNT = ^tagNT;
tagNT = record
Temp: Double
//温度
OValue: Double
//焓值
end;


var
Form1: TForm1;

implementation

{$R *.dfm}
var
NTList: TStringList
//你所提供的列表


function GetMyValue(const AName: string;{物质名称} ATemp: Double{温度}): Double;
var
pMyNT: pNT;
i: Integer;
TOMin, //低于所求温度的最大值
TOMax, //大于所求温度的最小值
NOMin, //低于所求温度的最大值温度对应的焓值
NOMax, //大于所求温度的最小值温度对应的焓值
DResult: Double
//焓值返回值
begin
TOMin := -500
//温度永远不可能取到此值
TOMax := -500;

NOMin := 0
//焓值初始值
NOMax := 0;

DResult := -1.0
//返回的结果设一个

NTList.Sort
//按物质名称排序
if NTList.Find(AName, i) then
begin
while i < NTList.Count do
begin
pMyNT := pNT(NTList.Objects)
//按物质名称排序
{*********搜索物质名称结束,跳出循环********}
if NTList.Strings <> AName then
begin
Break;
end;

{*********搜索到匹配温度,跳出循环********}
if ATemp = pMyNT.Temp then
begin
DResult := pMyNT.OValue;
TOMin := ATemp
//设定偏移温度
TOMax := ATemp

Break
//跳出While循环
end
//在此处找出
// TOMin, TOMax, NOMin, NOMax,
//
else
begin
if pMyNt.Temp < ATemp then //温度值小于表里的给定值
begin
if (ATemp - pMyNt.Temp) < Abs(TOMin - pMyNt.Temp) then
begin
TOMin := pMyNt.Temp;
NOMin := pMyNt.OValue;
end;
end
else //温度值小于表里的给定值
begin
if (pMyNt.Temp - ATemp) < Abs(TOMax - pMyNt.Temp) then
begin
TOMax := pMyNt.Temp;
NOMax := pMyNt.OValue;
end;
end;
end;
Inc(i);
end;

if ((TOMin = -500) or (TOMax = -500)) then //给定的温度值过小或过大
begin
//输出错误信息超出范围
DResult := -1.0
//超出范围
end
else if TOMin <> TOMax then
begin
DResult := NOMin + (NOMax - NOMin)*(ATemp - TOMin)/(TOMax - TOMin);//你的计算公式
end;
end;

Result := DResult;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
pMyNT: pNT;
begin
NTList := TStringList.Create;
New(pMyNT);
pMyNT.Temp := 100;
pMyNT.OValue := 169;
NTList.AddObject('二氧化碳', TObject(pMyNT));

new(pMyNT);
pMyNT.Temp := 200;
pMyNT.OValue := 357;
NTList.AddObject('二氧化碳', TObject(pMyNT));

new(pMyNT);
pMyNT.Temp := 100;
pMyNT.OValue := 130;
NTList.AddObject('氮气', TObject(pMyNT));

new(pMyNT);
pMyNT.Temp := 200;
pMyNT.OValue := 260;
NTList.AddObject('氮气', TObject(pMyNT));

new(pMyNT);
pMyNT.Temp := 100;
pMyNT.OValue := 132;
NTList.AddObject('氧气', TObject(pMyNT));

new(pMyNT);
pMyNT.Temp := 200;
pMyNT.OValue := 267;
NTList.AddObject('氧气', TObject(pMyNT));

//继续在下添加列表

end;

procedure TForm1.FormDestroy(Sender: TObject);
var
pMyNT: pNT;
i: Integer;
begin
//释放节点分配的内存
for i := NTList.Count - 1 downto 0 do
begin
pMyNt := pNT(NTList.Objects);
Dispose(pMyNt);
end;

//释放列表
NTList.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
// ShowMessage(FloatToStr(GetMyValue(Edit1.Text, StrToFloat(Edit2.Text))));
Label1.Caption := FloatToStr(GetMyValue(Edit1.Text, StrToFloat(Edit2.Text)));
end;

end.
///////////////////////////////
我知道大家喜欢用数组
 
今天,我的问题在大家的帮助下面得到了很好的解决,我在这里非常感谢大家。虽然我这次是正式第一次来大富翁,我想我以后还会经常来的。
这里是分数分配方案:
li_cj :20分
stuwe :10分
sunshine1750 :15分
vividw :15分
xzh2000 :20分
yanyandt2 :10分
影 子 :30分
至于tingjie,除了在这里给他剩余的80分之外,我会再开帖子给他200分……虽然这些对他的辛劳与不厌其烦来说不算什么……我觉得这是对他的热心助人的唯一的回报。
在这里再次谢谢大家,谢谢所有关注过的DFW。
 
多人接受答案了。
 
顶部