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

  • 主题发起人 我是一个大菜鸟
  • 开始时间

我是一个大菜鸟

Unregistered / Unconfirmed
GUEST, unregistred user!
不好意思,也许是我说问题过于含糊吧,原来我只是不想太麻烦你们,所以随便设计了一个近似的模块。
我是要编一个根据温度取焓值的函数:
它们的关系是这样的,物质x[0],温度y[0]就会有一个固定的焓值h[0]
物质x[1],温度y[1]就相对一个固定的焓值h[1]
物质x[1],温度y[1]就相对一个固定的焓值h[1]
如果温度T为y<T<y[i+1] 焓值就等于h+(h[i+1]-h)/(y[i+1]-yi)
当然焓值将会用静态数组格式输进(顺便问我应该在哪里设置静太数组比较好,我是菜鸟)
现在需要架构的函数GetH(x,T)就是要在知道物质与温度的时候调用焓值,
T在数组T的范围内,但不一定等于T

刚才误导大家了,虽然大家的答案对我有很多启发,可是还是完成不了我的程序。
刚才回答的我也会给分的,而且衷心的感谢。
 
没必要传入一个数组吧
function GetHot(const x: String;y:Integer):Integer
begin
if x='大写' then
case y of
1:Result:='壹';
2:Result:='贰'
end;
end;

其它你想把数字转成金额吧,网上有很多现成的转换函数
 
不用数据.
function GetHot(const x: String;y:Integer):string;
begin
if x='中文' then
result:=getCN(y)
else if x='英文' then
result=getEN(y);
end;
function getCN(y:double):string;//
begin
case 1 :result='壹'
case 3: result='参'
end;
function getEN(y:double):string;
begin
case 1 :result='one'
case 3: result='three'
end;
 
拜托先把问题组织好!
我看了几遍都不知道什么意思,可能理解能力不够。[:(]
 

这问题简单,我一会给你写一个。
 
x:string;
x[1]:=’大写’;x[2]:=’英文’這兩個條件是永遠不成立的
下次還是表達好一點

樓上的兩個代碼應該可以實現你的要求
 
不好意思,也许是我说问题过于含糊吧,原来我只是不想太麻烦你们,所以随便设计了一个近似的模块。
我是要编一个根据温度取焓值的函数:
它们的关系是这样的,物质x[0],温度y[0]就会有一个固定的焓值h[0]
物质x[1],温度y[1]就相对一个固定的焓值h[1]
物质x[1],温度y[1]就相对一个固定的焓值h[1]
如果温度等于y<y<y[i+1] 焓值就等于h+(h[i+1]-h)/(y[i+1]-yi)
当然焓值将会用静态数组格式输进(顺便问我应该在哪里设置静太数组比较好,我是菜鸟)
现在需要架构的函数GetH(x,y)就是要在知道物质与温度的时候调用焓值。

 
现在需要架构的函数GetH(x,T)就是要在知道物质与温度的时候调用焓值。
T在数组T的范围内,但不一定等于T
 
GetH( i:integer):double
begin
if( y < y < y[i+1] ) then
result := h+(h[i+1]-h)/(y[i+1]-yi)

end;
// i 为 物质种类的编号
 
物质x[0],温度y[0]就会有一个固定的焓值h[0]
物质x[1],温度y[1]就相对一个固定的焓值h[1]
物质x[1],温度y[1]就相对一个固定的焓值h[1]
兄弟是这样吧:
[red]物质x[0],温度y[0]就会有一个固定的焓值h[0]
物质x[0],温度y[1]就相对一个固定的焓值h[1]
物质x[1],温度y[0]就相对一个固定的焓值h[2]
物质x[1],温度y[1]就相对一个固定的焓值h[3][/red]
不知我的理解对不对,问题会直接影响你的答案。如果再给答案!




->>
function getCN(y:double):string;//
begin
case 1 :result='壹'
case 3: result='参'
end;
这样的函数可以执行吗?我可不这么认为!!

 

哦,多了这么多讨论。
上面的函数给你写好。至于温度的那个我就不看了。

type
T = (Upper,Letter)
//大写,英文

function Gethot(y:integer
x:T=Upper): string;//默认是大写
type
TArr = array [0..19] of string;//前十个是大写,后十个是英文
const
arr: TArr = ('零','壹','贰','叁','a','b','c','d','e','f',
'zero','one','two','three','A','B','C','D','E','F');
var
i,j: integer;
begin
result := '';
if y > 9 then
exit;
case x of
Upper:
begin
result := arr[10+y];
end;
Letter:
begin
result := arr[y];
end;
end;
end;
 
to yanyandt2: 你哪个只是其中的一个子函数,我也写了出来,只是在整个Get函数中我没有能够实现目标任务。:)
to tingjie :你的理解是对的,当然温度还有不在数组内,而在数组范围内的。
to 影 子: 真不好意思,我误导你了,不过你的程序给了我一定的启发,只是我还是没有能够完成我的程序。
to all:我是一个菜鸟,大家可以详细的帮我解决这问题吗?虽然我有整个解决的思路,可是我还是实现不了。
 
我觉得那个函数足够了,你说没能够实现,为什么不能实现,
你说的意思我不明白
 

需要从范围判断可以参考下面的函数

function test(input: integer): integer;
type
TArr = array [0..10] of integer;
const
arr: TArr = (0,10,20,30,40,50,60,70,80,90,100);
var
i,j: integer;
begin
result := 0;
i := 0;
if input >= 100 then
begin
result := 100;//最大值,或不可到达
end
else if (input < 0) then//最小值,或不可到达
begin
result := -1;
end
else
repeat
if (input >= arr) and (input < arr[i+1]) then
begin
result := i;
exit;
end;
inc(i);
until i>High(arr)-1;
end;

 
定义一个记录数组,用来保存特定物质x,温度y下的焓值h,
type
DynR = Record
x: string,
y: integer,
h: integer,
end;
var
Dyn : Array of DynR
通过访问这个组就可以了



 
看来我的理解不完全对
->>如果温度T为y<T<y[i+1] 焓值就等于h+(h[i+1]-h)/(y[i+1]-y[red][/red])
这个时候的焓值和物质又有什么关系呢?还是没有关系。
 
to影子:谢谢你,我想你的函数只是仅仅对所给温度的判断(即input),对吗?
to sunshine1750:我对这个不熟悉,你能给我代码吗?
to all:这里有一点数据(当然是精简了的)
物质 温度 焓值
二氧化炭 100 169
二氧化炭 200 357
氮气 100 130
氮气 200 260
氧气 100 132
氧气 200 267

我想达到的效果就是编一个函数GetH(二氧化炭,200)=357,GetH(二氧化炭,150)=263这样的效果。刚才有个大虾告诉我用stringList分别存放,索引对应就很简单,可惜我不是很会。
希望各位大虾继续关注,感激不尽。
 

最简单的方式,使用数据库,一条语句就搞定。

 
我也想过使用数据库,可惜数据量不是很大,而且这个函数在我的一个大程序里面只是一个子程序。再说。。。数据库我不怎么懂。我只是懂一些很皮毛的东西。:(
 
定义一个记录类型,用来记录文温度和焓值
type
pNT = ^tagNT;
tagNT = record
Temp: Double
//温度
pMyNT: Double
//焓值
end;
end;


function GetMyValue(const AName: string;/*物质名称*/
ATemp: Double/*温度*/): Double;
var
pMyNT: pNT;
NTList: TStringList
//你所提供的列表
i: Integer;
TOMin, //低于所求温度的最大值
TOMax, //大于所求温度的最小值
NOMin, //低于所求温度的最大值温度对应的焓值
NOMax, //大于所求温度的最小值温度对应的焓值
DResult: Double
//焓值返回值
Templature: Double
//当前记录的温度值
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));


TOMin := -500
//温度永远不可能取到此值
TOMax := -500


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

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

NTList.Sort;
if NTList.Find('二氧化碳', i) then
begin



pMyNT := pTable(NTList.Objects)
//按物质名称排序
while True do
begin
/*********搜索物质名称结束,跳出循环********/
if NTList.Strings <> '二氧化碳' then
begin
Break;
end;

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

Break
//跳出While循环
end
/*在此处找出
/* TOMin, TOMax, NOMin, NOMax,
/*
if else
begin
...
end
[red] Inc(i)
//不好意思少了关键一句[/red] end;

if ((TOMin = -500) or (TOMax = -500)) then
begin
//输出错误信息超出范围
end
else
begin
DResult := ...//你的计算公式
end;
end;

Result := DResult;
end;


////////////////////////////////////////
顺便问一下: 焓怎么拼读?[:)]
 
顶部