2017-01-26 15 views
0

Я не могу найти источник этой ошибки, которую я продолжаю получать в своем кодировании для школы. Каждый раз, когда я ввожу одно значение в свой массив и цикл for запускает его, он либо сталкивается с ошибкой во время выполнения, либо остальная часть программы запускается на основе информации из первого значения и не принимает никаких других значений. Может кто-нибудь, пожалуйста, объясните мне, как это исправить?неизвестная ошибка времени выполнения в pascal

program Montserrat_Elections; 

Var cndnme : array [1..4] of String; 
    votes : array [1..4] of Integer; 
    highest, cnt : Integer; 
    winner : string; 

begin 

highest:= 0; 
winner:= 'Dan'; 

For cnt:= 1 to 4 do 

    begin 
      Writeln('Please enter the first name of the candidate and the number of votes'); 
      Read (cndnme[cnt], votes[cnt]); 

      If votes[cnt] > highest then 
      highest := votes[cnt]; 
      winner := cndnme[cnt]; 
    end; 
Writeln('The winner of this constituency is', winner, 'with', highest, 'votes') 
end. 
+1

прочитанной об одном операторе и составного оператора. Вам нужно начало/конец вокруг вашего тела. –

+1

Вы не можете прочитать строку и целое число в одной команде READ, так как будет разделителем, который отделяет строку от целого? Пространство также разрешено для чтения (something_string) –

+0

@David: проблема заключается в выражении 'Read'; это не имеет никакого отношения к 'if'. –

ответ

1

Изменение Read в ReadLn:

Readln (cndnme[cnt], votes[cnt]); 

Затем вам нужно добавить начать ... конец; этой линии:

If votes[cnt] > highest then 
     begin 
     highest := votes[cnt]; 
     winner := cndnme[cnt]; 
     end; 

Я обновляю & тест ваши коды:

program Montserrat_Elections; 

Var cndnme : array [1..4] of String; 
    votes : array [1..4] of Integer; 
    highest, cnt : Integer; 
    winner : string; 

begin 
highest:= 0; 
winner:= 'Dan'; 

For cnt:= 1 to 4 do 

begin 
     Writeln('Please enter the first name of the candidate and the number of votes'); 
     readln(cndnme[cnt], votes[cnt]); 

     If votes[cnt] > highest then 
     begin 
     highest := votes[cnt]; 
     winner := cndnme[cnt]; 
     end; 

end; 
Writeln('The winner of this constituency is ', winner, ' with ', highest, ' votes'); 
readln; 
end. 

Результат:

Please enter the first name of the candidate and the number of votes                            
Me                                            
23                                            
Please enter the first name of the candidate and the number of votes                            
You                                            
42                                            
Please enter the first name of the candidate and the number of votes                            
Ainun                                           
18                                            
Please enter the first name of the candidate and the number of votes                            
Jhon                                            
38                                            
The winner of this constituency is You with 42 votes