2014-05-16 4 views
0

제 프로그램에서 마지막 이름과 번호를 계속 표시하도록 도와주세요. 프로그램입니다. 내가 정말 여기에 어떤 문제가 있는지보고 해달라고하지만 난 너희들이 정말 일부는이파스칼 프로그램에 최대 값이 표시되지 않습니다.

Var 
Counter:Integer; 
MaxValue:Integer; 
NumofVotes:Array[1..4]of Integer; 
ChristianName:Array[1..4]of String; 
Surname:Array[1..4]of String; 
WinnerFName:String; 
WinnerSName:String; 
WinnerParty:String; 
CandidateParty: Array[1..4] of String; 

begin 
    FOR Counter:= 1 to 4 Do 
    If Counter= Counter Then 
    begin 
Writeln ('Please enter Christian name of Candidate ', Counter, ':'); 
Readln (ChristianName[Counter]); 
Writeln ; 
Writeln ('Please enter Surname of Candidate ', Counter, ':'); 
Readln (Surname[Counter]); 
Writeln ; 
Writeln ('Please enter number of votes received by Candidate ', Counter, ':'); 
Readln (NumOfVotes[Counter]); 
Writeln ; 
Writeln ('Please enter party of Candidate ', Counter, ':'); 
Readln (CandidateParty[Counter]); 

    end; 

    IF Counter = 1 THEN 
begin 
MaxValue:= NumofVotes[Counter]; 
WinnerFName:= ChristianName[Counter]; 
WinnerSName:= Surname[Counter]; 
WinnerParty:= CandidateParty[Counter]; 
end 

ELSE 
IF (NumofVotes[Counter]>MaxValue) THEN 
begin 
WinnerFName:= ChristianName[Counter]; 
WinnerSName:= Surname[Counter]; 
MaxValue:= NumofVotes[Counter]; 
WinnerParty:= CandidateParty[Counter] 
end; 
Writeln ; 
Writeln ('The winner of the elections for this constituency is:'); 
Writeln ('FirstName: ', WinnerFName, ' Surname: ', WinnerSName); 
Writeln ('From the ', WinnerParty); 
Writeln (WinnerFName, ' has won with ', MaxValue, ' votes'); 
Writeln ; 
Writeln ; 
Writeln ('Press <Enter> to end'); 
Readln ; 

end. 
+0

Writeln ; Writeln ('The winner ... is:'); 전에'카운터 = 카운터 Then' 경우 .. 그 테스트의 어떤 종류로 닫습니다 무엇을 기대 하는가? 카운터는 항상 카운터입니다. IF Counter = 1 THEN' .. 파스칼로 된 루프 뒤에 'for'루프 인덱스 변수를 사용할 수 없습니다. 비록 당신이 할 수 있었다고해도, 그것이 어떻게 '1'이 될 수 있었는지, 마지막으로 그것이 '4'였을 것입니다. –

+0

그 일을하지 않았을 때 프로그램이 이상하게 보였으므로 순차적으로 표시하지 않고 동시에 네 가지 질문을 모두 표시했습니다. – user3643170

+0

미안하지만 방금 고마워했습니다.하지만 테스트는 어떨까요? 최대 값에 대해 ?? – user3643170

답변

0

코드는 begin ... end 키워드의 한 쌍의 부족 보인다 내 머리를 죽이는 도움이 필요하세요 볼 수 있기를 바랍니다 않습니다. 따라서 for 명령어는 첫 번째 end 키워드로 끝납니다. 즉, 모든 후보자 데이터를 읽은 직후입니다. 그런 다음 Counter4이고 IF Counter = 1의 비교는 실패합니다. 실행은 ELSE으로 진행됩니다. 초기화되지 않은 MaxValue은 아마도 0이므로 네 번째 NumofVotes이 그보다 커지면 결국 네 번째 후보가 인쇄됩니다.

코드를 만들려면 당신이 바로 FOR ... DObegin를 추가하고 end 단지