使两个不同变量类型的项目相关

Making two items of different variable types relate

我有一个名为 election 的记录数组(索引号大小为 4),其中包含大约 6 个不同的字段名称,我将重点关注其中两个字段名称。比如说,一个字段名称称为 totvot(总票数,声明为整数),另一个字段名称称为 nameC(候选人姓名,声明为字符串),我想使用 if 然后循环说:

For count := 1 to 4 do
     begin
       if (election[count].totvot>wc)then
         wc:=election[count].nameC;
       end; 

我在上面所做的是,假设数组 election[count].totvot 中的所有四个位置都已填充,然后我想对所有四个位置进行排序以找到最大的数字。例如,如果四个位置按以下方式填充:2、3、5 和 6,则 6 将是最大的数字。并且 6 也位于位置 4,因为它是第四个数字。之后,现在我已经找到了最高的数字,我想将同样在位置 4 中找到的名称与该数字相关联,因此 WC:=election[count].nameC 行。问题是,我将 WC(代表获胜候选人)声明为整数,将 election[count].nameC 声明为字符串类型变量。而且我不知道使用什么代码来使两者相关联(不是将整数转换为字符串,而是相关联)。下面是我用来声明和初始化我提到的变量的代码。

Var
 wc,rate,total,choice,count,totgen,totspe,totspo,y,r: integer;
 Election:array[1..4]of Elect;
Begin
 clrscr;
 textcolor(10);
 wc:=0;
  for count:=1 to 4 do
   begin
     Election[count].totvot:=0;
     Election[count].nameC:='';

所以基本上,我只想将数组 election[count].totvot 中的最高值与得票最高的候选人的名字联系起来。

从您的代码中,我可以看到 Elect 具有候选人姓名 (nameC) 和票数 (totvot)。您使用 wc(获胜计数?)的方式告诉我它持有总票数。因为它是一个数字类型,你不能把一个字符串放进去,所以你必须使用别的东西。我会添加一个新变量 winnerName:

Var winnerName: String;
//Initialization code here

For count := 1 to 4 do
    begin
        if (election[count].totvot>wc)then
            wc:=election[count].totvot;
            winnerName:=election[count].nameC;
    end;

您的数组索引(count 的值)已经将每个人的名字与票数相关联。对于您想做的事情,有几种不同的解决方案。编码中的许多技能都决定了您认为哪种解决方案是最好的。这里描述了两个例子。编写代码取决于您。

  1. 创建一个循环 - forwhilerepeat 循环 - 从 count:=1 到 [=15] 遍历数组=] 并使用一个新变量 winner 来存储得分最高的人的数量 - 循环的每一行都会将迄今为止获胜者的票数与下一个人的票数进行比较,仅存储 count 的最高获胜者。 假设您的获胜候选人是数组中的第 2 位 (count:=2),获胜者的姓名为 election[2].nameC,获胜票数为 election[2].totvot

  2. 在您现有的 for 语句之前添加一行以引入新变量,例如 winner(如上)并将值设置为1.在for语句中比较当前候选人election[count].totvot的票数与election[winner].totvot的值,如果election[count].totvot更大则设置winner:=count(所以赢家在循环结束时仍然是最高的)。那么您的获胜者的名字是 election[winner].nameC.

如果很可能出现联合获胜者(例如,所投总票数较少),则这两种解决方案都需要稍作改进。

你的问题得到了一些反对票 - 可能是因为你的解释很长,有时有点难以理解。如果您可以将问题分解为简单的要点步骤,这将有助于培养您的编程和解决问题的技能。

一些 Pascal 参考资料隐藏在 Pascal 问题标签的 wiki 中可能有用 - https://whosebug.com/tags/pascal/info