2011-02-09 10 views
0

このプログラムはアレイに正しく書き込まれていますか?どのようにして配列をパスカルで書くのですか?

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 
+1

私はあなたのコードを強調するために自由を取った。これは '{}'ボタンを使って行うことができます。 – GolezTrol

+1

そうです。あなたはそれをコンパイルしようとしましたか?また、ちょっときれいにしてください。些細な丸い括弧がたくさんあり、内部に窪みがありません。 – Christian

+1

あなたは「これはいいですか?」と尋ねます。あなたはそれを試しましたか?あなたは間違いを受けますか? – GolezTrol

答えて

2

はよさそうだが、あなたはコード内のいくつかの問題があります

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

データ型(string)後;を含めることができます。

  • コードがフォーマットされていません。特にインデントがないと、何が起こっているのかを理解することが難しくなります。 (;)

  • Array[1..10] of string後にいくつかのend;の文が欠落している

  • あなたはセミコロンを逃している(おかげでことを固定するためのGolezTrolします)。 While (Name <> 'END')Do beginまたはFor count:= 1 to 10 Do beginのいずれかに一致するend;ステートメントが必要です。

  • 変数Tmbは宣言されていません。

  • Bloodtestは常に0に初期化され、Bloodtestに書き込むのはこの行にあります:BloodTest := (Num * BloodTest);。それはおそらくあなたがしたいことではありません。

  • DoctorFeeは、ユーザーがType 1またはType 2と入力しない限り初期化されません。 NMB_Payableにも同様の問題があります。

  • 変数Countが初期化されていますが、後で使用されることはありません。ダメージはありませんが、わかりやすいように私はそれをきれいにします。

あなたの質問に答えてください:いいえ、あなたは宣言された配列を使用していません。私はこのプログラムがあなたがしたいとは思わないと思います。

あなたが達成しようとしていることを説明するなら、私たちはそれを手助けすることができます。

+1

コードのクリーニングを終了するには、ClinicとCompanyの2つのテストでは、最初のテストが成功したかのようにIf-Then-Else(2つのIf-Thenの代わりに)構造を使用する必要があります。 2回目のテストを行います。 – LudoMC

1

私はそれが配列に書いている場所や、最初の場所で配列を使う場所は見ません。取得する各アイテムを処理するだけで、最初は配列に格納されることはありません。

また、各患者に10回質問して請求します。私は二重課金について聞いたことがありますが、これは狂っています!

コードを実行して実際に何が起こるかを確認してください。あなたがしなかったのは明らかです。

関連する問題