2012-09-26 7 views
1

Je ne peux pas comprendre ce qui se passe ici. Peux-tu me donner un coup de main? C'est le code problématique:Quel est le problème avec cette syntaxe Pascal?

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; 

Le compilateur marque une erreur dans la ligne 10 de ce code (sinon commence). L'erreur est: Fatal: erreur de syntaxe,; attendu mais ELSE trouvé.

Si quelqu'un veut plateau compiler ici est le code entier: http://pastebin.com/dRg1Lguu

+0

Etes-vous sûr que pascal supporte + = opérateur? – CAMOBAP

+0

Quel est le problème avec le code? – BugFinder

+2

Il ne devrait pas y avoir ** de point-virgule après le 'end' avant le' else'. Idem pour la ligne 'cantiRecu: = cantiRecu + 1' - cela ne devrait pas non plus avoir de point-virgule. –

Répondre

6

Notez que Pascal le point-virgule est un séparateur , et non une terminaison . Parfois, cela n'a pas d'importance, mais dans certains cas, en particulier avant un else. Votre code devrait être:

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 

Notez que je reformater le code dans un style plus classique, ce qui contribue à rendre plus facile à comprendre la logique du programme et qui rend également plus évident où les points-virgules sont nécessaires et où ils ne sont pas.

+1

Je le vois maintenant. Merci mec. – sanfilippopablo

0

Ressemble problème opérateur + =

+0

J'ai ajouté un message d'erreur du compilateur. Regarde. – sanfilippopablo

+1

Free Pascal permet des incréments de style C avec un paramètre spécial. Il est cependant destiné à des fins de conversion, et n'est pas destiné au nouveau code écrit directement en Pascal. –

Questions connexes