这个程序是否正确写入了数组?
Program Malaria_Outbreak (input,output);
Var
BC:real;
LO:real;
count:integer;
Num:integer;
BloodTest:integer;
Registration:integer;
Clinic:string;
DoctorFee:integer;
Total:integer;
NMB_Payable:real;
Company:string;
Name:string;
Patient:Array[1..10] of string
Begin
clrscr;
BC:=(0.8);
LO:=(0.7);
Count:=(0);
Num:=(0);
BloodTest:=(Num * 700);
Registration:=(500);
Writeln('Please enter the name of the patient');
Readln(Name);
While (Name <> 'END')Do
Begin
For count:= 1 to 10 Do
Begin
Writeln('Please enter the clinic the patient attends');
Readln(Clinic);
If (Clinic = 'Type 1') Then
Begin
DoctorFee:=(800);
End;
If (Clinic = 'Type 2') Then
Begin
DoctorFee:=(1200);
End;
Writeln('The doctor fee for the patient is $',DoctorFee);
Writeln('Please enter the number of blood tests the patient has had');
Readln(Num);
BloodTest:=(Num * BloodTest);
Writeln('The blood test for the patient is $',BloodTest);
TMB:=(Registration + DoctorFee + BloodTest);
Writeln('The total medical bill for the patient is $',TMB);
Writeln('Please enter the insurance company the clinic is affiliated with');
Readln(Company);
If (Company = 'Blue Cross') Then
Begin
NMB_Payable:=(BC * TMB);
End;
If (Company = 'LOJ') Then
Begin
NMB_Payable:=(LO * TMB);
End;
Writeln('The net medical bill for the patient is $',NMB_Payable);
End;
Readln;
Readln;
End
答案 0 :(得分:2)
看起来不错,但您可能希望在数据类型(;
)之后包含string
Patient : Array[1..10] of String;
答案 1 :(得分:2)
代码中存在一些问题。
您的代码未格式化。特别是缺乏缩进使得很难理解发生了什么。 (感谢GolezTrol修复它)
您在Array[1..10] of string
缺少某些end;
语句。 While (Name <> 'END')Do begin
或For count:= 1 to 10 Do begin
应该有匹配的end;
声明。
未声明变量Tmb
。
Bloodtest将始终为0.它已初始化为0,并且您写入Bloodtest
的唯一时间就在此行:BloodTest := (Num * BloodTest);
。那可能不是你想要做的。
DoctorFee
或Type 1
,否则 Type 2
未初始化。 NMB_Payable
也有类似的问题。
有一个变量Count
已初始化,但之后从未使用过。不会造成任何损害,但为了便于阅读,我会将其清理干净。
回答你的问题:不,你没有使用声明的数组,我不认为这个程序能做你想做的事。
如果你解释一下你想要完成什么,我们可以帮助你解决这个问题。
答案 2 :(得分:1)
我根本没有看到它写入数组的位置,也没有看到它首先使用数组的位置。它只是处理它获得的每个项目,首先不会将任何内容存储在数组中。
它还会向每位患者询问并开具10次费用。我听说过双重计费,但这太疯狂了!
您应始终运行代码并查看实际发生的情况。很明显你没有。