投票单的帕斯卡代码

Pascal Code For Voting Slip

PROGRAM VOTING_SLIP (INPUT,OUTPUT);

CONST

Array_size = 20;

VAR
Counter, Increment, i, j : Integer;
Found, full_name, District_ID : string;
DistrictArea : Array[1..20] of string;
DistrictID : Array[1..20] of string;

BEGIN

WRITELN('Please Populate District Area Array');
FOR i := 1 to 20 DO
READLN(DistrictArea[i]);

WRITELN('Input Values for District ID');
FOR j := 1 to 20 DO
READLN(DistrictID[i]);

WRITELN('Please Enter Voter Name');
READLN(full_name);

IF (full_name <> 'END') THEN DO
READLN(District_ID);
Increment := 1;
Counter := 0;
Found := 'FALSE';

WHILE(Found = 'FALSE') AND (Increment <= Array_size) DO
 IF (DistrictID[Increment] = District_ID) THEN
 Found := 'TRUE';
ELSE
 Increment := Increment + 1;

IF (Found = 'TRUE') THEN
 WRITELN (full_name,'you have been registered to vote in', 
 DistrictArea[Increment]);
 Counter := Counter + 1;
ELSE
 Writeln ('Error! Invalid District ID');
ELSE
 Writeln ('you have', Counter, 'registered voters. Goodbye!');
END.

上面的代码不会执行到第10行。编译器说:

1. 26 / 3 oneste~1.pas
 Error: Illegal expression
2. 26 / 3 oneste~1.pas
 Error: Illegal expression
3. 26 / 3 oneste~1.pas
 Fatal: Syntax error, ; expected but identifier READLN found

有人可以帮忙吗?谢谢。

为什么说第 10 行?错误消息显示第 26 行。

IF-THEN 之后不应该有 DO。

您应该在 BEGIN-END 块中包含您的一些陈述。

关键字 ELSE 和 END 前的分号过多。

接近尾声时,您有两个 ELSE 子句。那应该做什么?

下面是关于评论的更新代码:

PROGRAM VOTING_SLIP (INPUT,OUTPUT);

uses crt;

CONST
 Array_size = 20;

VAR
 Counter, Increment, i, j : Integer;
 Found, full_name, District_ID : string;
 DistrictArea : Array[1..20] of string;
 DistrictID : Array[1..20] of string;

BEGIN

WRITELN('Please Populate District Area Array');
FOR i := 1 to 20 DO
 READLN(DistrictArea[i]);

 WRITELN('Input Values for District ID');
 FOR j := 1 to 20 DO
 READLN(DistrictID[j]);

 WRITELN('Please Enter Voter Name');

 READLN(full_name);

 IF (full_name <> 'END') THEN BEGIN
 READLN(District_ID);
 Increment := 1;
 Counter := 0;
 Found := 'FALSE';
 END

  WHILE (Found = 'FALSE') AND (Increment <= Array_size) DO BEGIN
   IF (DistrictID[Increment] = District_ID) THEN BEGIN
   Found := 'TRUE';
   END
   ELSE BEGIN
   Increment := Increment + 1;
   END
  END

  IF (Found = 'TRUE') THEN BEGIN
    WRITELN (full_name,'you have been registered to vote in', 
    DistrictArea[Increment]);
    Counter := Counter + 1;
  END
  ELSE BEGIN
   Writeln ('Error! Invalid District ID');
  END
 ELSE BEGIN
  Writeln ('you have', Counter, 'registered voters. Goodbye!');
 END
END.

新的编译器错误: 35 / 3 oneste~1.pas 致命:语法错误,;预期但发现

该代码应该允许在数组中输入学区区域和学区 ID 的值。然后接受选民姓名,如果输入结束,则代码关闭并使用计数器变量显示选民人数,否则它允许为该选民姓名输入地区 ID。完成后,对地区 ID 数组进行编码,以确保其正确的地区 ID;如果是,则将选民姓名和相应的选区区域打印到屏幕上,如果不是,则通知选区 ID 无效。

PROGRAM VOTING_SLIP (INPUT,OUTPUT);

uses crt;

CONST
 Array_size = 20;

VAR
 Counter, Increment, i, j, k : Integer;
 Found, full_name, District_ID : string;
 DistrictArea : Array[1..20] of string;
 DistrictID : Array[1..20] of string;

BEGIN

 WRITELN('Please Populate District Area Array');
 FOR i := 1 to 20 DO BEGIN
   READLN(DistrictArea[i]);
 END;

 WRITELN('Input Values for District ID');
 FOR j := 1 to 20 DO BEGIN
  READLN(DistrictID[j]);
 END;

 For k := 1 TO 10 DO BEGIN

  WRITELN('Please Enter Voter Name');

  READLN(full_name);

  IF (full_name <> 'END') THEN BEGIN
   WRITELN ('Please enter District ID');
   READLN(District_ID);
   Increment := 1;
   Counter := 0;
   Found := 'FALSE';
  END;

   WHILE (Found = 'FALSE') AND (Increment <= Array_size) DO BEGIN
    IF (DistrictID[Increment] = District_ID) THEN BEGIN
     Found := 'TRUE';
    END
    ELSE BEGIN
    Increment := Increment + 1;
    END
   END;

    IF (Found = 'TRUE') THEN BEGIN
     WRITELN (full_name,' - you have been registered to vote in - ', 
     DistrictArea[Increment]);
     Counter := Counter + 1;
     END
    ELSE BEGIN
     Writeln ('Error! Invalid District ID');
    END;

   IF (full_name = 'END') THEN BEGIN
    Writeln ('you have - ', Counter, '- registered voters. Goodbye!');
   END
  END;
END.

这是具有我最初预期功能的最终工作代码。 我解决了剩下的问题并添加了一些增强功能。非常感谢所有帮助过我的人。