开发者

How do I write arrays in pascal?

Is this program correctly written with the array?

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);
           开发者_StackOverflow中文版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


Looks good, but you might want to include the ; after the datatype (string)

Patient : Array[1..10] of String;


There are some problems in the code.

  • Your code was not formatted. Especially the lack of indenting makes it hard to understand what's going on. (thanks to GolezTrol for fixing that)

  • You're missing a semi-colon (;) after Array[1..10] of string

  • Some end; statement is missing. Either While (Name <> 'END')Do begin or For count:= 1 to 10 Do begin should have a matching end; statement.

  • Variable Tmb is not declared.

  • Bloodtest will always be 0. It's initialized to 0, and the only time you write to Bloodtest is on this line: BloodTest := (Num * BloodTest);. That's probably not what you want to do.

  • DoctorFee is uninitialized unless the user types Type 1 or Type 2. NMB_Payable has a similar problem.

  • There's a variable Count that's initialized, but never used afterwards. Doesn't do any damage, but for readability I'd clean it up.

To answer your question: No, you're not using the array that's declared, and I don't think this program does what you want it to do.

If you explain what you're trying to accomplish, we can help you out with that.


I don't see where it's writing to the array at all, nor where it would make any use of the array in the first place. It's simply processing each item it gets, nothing is carried to be stored in an array in the first place.

It's also going to ask and bill each patient 10 times. I've heard of double-billing but this is crazy!

You should always run your code and see what actually happens. It's quite obvious you didn't.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜