You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pascal投票单代码翻译与技术问询:补全并规范代码实现

补全并汉化的Pascal投票单程序

我帮你把这段不完整的Pascal投票单代码补全、汉化并规范了逻辑,先梳理下原代码里的问题:第二个选区ID输入循环误用了变量i、IF语句语法错误,还缺失了核心的选区ID匹配逻辑和循环输入终止逻辑。下面是修复后的完整代码:

PROGRAM VOTING_SLIP (INPUT,OUTPUT);
CONST
  Array_size = 20;  // 定义数组最大容量
VAR
  i, j : Integer;
  Found : Boolean;  // 标记是否找到匹配的选区
  full_name, District_ID, Matched_District : string;
  DistrictArea : Array[1..Array_size] of string;  // 存储选区名称数组
  DistrictID : Array[1..Array_size] of string;    // 存储选区ID数组
BEGIN
  // 第一步:初始化选区名称数组
  WRITELN('请输入20个选区的名称:');
  FOR i := 1 to Array_size DO
    READLN(DistrictArea[i]);

  // 第二步:初始化选区ID数组
  WRITELN('请输入对应20个选区的ID:');
  FOR j := 1 to Array_size DO
    READLN(DistrictID[j]);  // 修复原代码的变量错误:将i改为j

  // 第三步:循环处理选民投票信息,输入"END"终止程序
  WRITELN('请输入选民姓名(输入"END"结束程序):');
  READLN(full_name);
  WHILE full_name <> 'END' DO
  BEGIN
    // 输入选民所属选区ID
    WRITELN('请输入该选民的选区ID:');
    READLN(District_ID);

    // 查找匹配的选区名称
    Found := False;
    Matched_District := '';
    FOR i := 1 to Array_size DO
    BEGIN
      IF DistrictID[i] = District_ID THEN
      BEGIN
        Matched_District := DistrictArea[i];
        Found := True;
        BREAK;  // 找到匹配项后终止循环
      END;
    END;

    // 输出投票单信息
    WRITELN('==================== 投票单 ====================');
    WRITELN('选民姓名:', full_name);
    IF Found THEN
      WRITELN('所属选区:', Matched_District, ' (ID: ', District_ID, ')')
    ELSE
      WRITELN('警告:未找到匹配的选区ID!');
    WRITELN('==============================================');

    // 提示输入下一位选民信息
    WRITELN('请输入下一位选民姓名(输入"END"结束程序):');
    READLN(full_name);
  END;

  WRITELN('程序已结束,感谢使用!');
END.

关键逻辑说明

  • 数组初始化:通过两次循环分别录入20个选区的名称和对应ID,确保数据一一对应;
  • 循环输入终止:使用WHILE循环替代原错误的IF语句,支持连续录入选民信息,直到输入END才终止;
  • 选区匹配:遍历选区ID数组,找到对应名称后标记为Found并终止循环,避免无效遍历;
  • 错误提示:如果输入的选区ID不存在,会输出警告信息,提升程序健壮性。

内容的提问来源于stack exchange,提问作者Takeem Lowe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:04:17