1

ここで何が起こっているのか理解できません。手伝って頂けますか?これは問題のあるコードです:

While not EOF(Archi) do begin
  index:= index + 1;
  Read(Archi, Alumno[index]);
  Promes[index] := (Alumno[index].nota1 + Alumno[index].nota2) / 2;
  if Promes[index] >= 6 then begin
     alguPromo := true;
     PromosIndex := PromosIndex + 1;
     Promos[PromosIndex]:= Alumno[index];
  end;
  else begin
       if Promes[index] > 4 then cantiRecu:= cantiRecu + 1;
       else begin
            LibresIndex += 1;
            Libres[LibresIndex] := Alumno[index];
            end;
  end;
end;

コンパイラは、このコードの 10 行目にエラーをマークします (else begin)。エラーは次のとおりです: 致命的: 構文エラーです。期待されていましたが、ELSE が見つかりました。

誰かがここでコンパイルしたい場合は、コード全体です: http://pastebin.com/dRg1Lguu

4

2 に答える 2

6

Pascal では、セミコロンはターミネータではなくセパレータであることに注意してください。これは問題にならない場合もありますが、特に . の前では問題になる場合もあります。コードは次のようになります。else

while not EOF(Archi) do
  begin
    index:= index + 1;
    Read(Archi, Alumno[index]);
    Promes[index] := (Alumno[index].nota1 + Alumno[index].nota2) / 2;
    if Promes[index] >= 6 then
      begin
        alguPromo := true;
        PromosIndex := PromosIndex + 1;
        Promos[PromosIndex] := Alumno[index]
      end
    else
      begin
        if Promes[index] > 4 then
          cantiRecu:= cantiRecu + 1
        else
          begin
            LibresIndex := LibresIndex + 1;
            Libres[LibresIndex] := Alumno[index]
          end
      end
  end

コードをより従来のスタイルに再フォーマットしたことに注意してください。これにより、プログラムのロジックが理解しやすくなり、セミコロンが必要な場所と必要でない場所がより明確になります。

于 2012-09-26T14:51:56.737 に答える
0

+=演算子に問題があるようです

于 2012-09-26T14:45:44.887 に答える