制作两个不同变量类型的项目

时间:2015-09-02 20:11:46

标签: arrays string integer record pascal

我有一个名为选举的记录数组(索引号大小为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将是最高数字。六个也将位于第四位,因为它是第四个数字。之后,既然我找到了最高的数字,我想将位置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:='';

基本上,我只是想将数组选举[count] .totvot中的最高值与具有最高票数的候选人的姓名联系起来。

2 个答案:

答案 0 :(得分:1)

数组的索引(count的值)已经将每个人的姓名与投票数相关联。您希望采用多种不同的解决方案。编码的大部分技巧是决定你认为最好的解决方案。以下是两个描述的例子。编写代码取决于您。

  1. 创建一个循环 - forwhilerepeat循环 - 从count:=1count:=4遍历数组并使用一个新变量winner用于存储得分最高的人的数量 - 循环的每一行将比较目前为止的获胜者的投票与下一个人的投票计数,仅存储{{ 1}}最高赢家。 假设您的获胜候选人在阵列中排名第2(count),获胜者的姓名将为count:=2,获胜的投票数为election[2].nameC

  2. 在您现有的election[2].totvot语句之前添加一行以引入新变量,例如 winner (如上所述)并将值设置为1.在{{1}内}}语句将当前候选人for的投票数与for的值进行比较,如果election[count].totvot大于设置election[winner].totvot(因此赢家仍然是最高的循环结束)。然后,您的获胜者名称为election[count].totvot

  3. 如果联合获胜者很可能(例如投票总票数很少),这两种解决方案都需要稍微改进。

    你的问题得到了一些投票 - 可能是因为你的解释很长,而且有时难以理解。如果您可以将问题分解为简单的子弹指向步骤,它将有助于并构建您的编程和解决问题的技能。

    一些Pascal引用隐藏在Pascal问号标签的wiki中可能有用 - https://stackoverflow.com/tags/pascal/info

答案 1 :(得分:0)

从您的代码中,我可以看到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;