使用Pascal Record查找最大工资值

时间:2014-03-28 14:36:11

标签: function record pascal procedure turbo-pascal

我编写了一个程序,将关于工人的不同数据填入表中。 (姓名,姓氏和工资)

帮我编写一个程序或函数,查找最大工资值和该工作人员的姓名,并将其写入控制台

我可以使用循环吗?

program labasix;

type firma = record
  name : string;
  lastName : string;
  salary : integer;
end;

var
  svitoch : array[1..12] of firma;
  i : integer;
  countOfWorkers : integer;
begin
  write('Number of workers (not more than 12): ');
  readln(countOfWorkers);
  writeln();

  for i := 1 to countOfWorkers do
    begin
      write('Name: '); readln( svitoch[i].name );
      write('lastName: '); readln( svitoch[i].lastName );
      write('Salary: '); readln( svitoch[i].salary );
      writeln();
    end;

   for i := 1 to countOfWorkers  do
     begin
        { what code must be here ??? }
     end;
end.

必须有这样的东西

procedure findMax(x, y, z: integer; var m: integer); 

begin
   if x > y then
      m:= x
   else
      m:= y;
   if z > m then
      m:= z;
end;

但是如何获得x y z值?

非常感谢你!

2 个答案:

答案 0 :(得分:1)

这是一个简单的函数,它返回包含数组中salary的最大值的索引。在此之后将其粘贴到您的代码中:

type firma = record
  name : string;
  lastName : string;
  salary : integer;
end;

这是功能:

function getmax():integer;
var max:integer;
begin
     max:=1;
     for i:=2 to countOfWorkers do
     begin
         if svitoch[i].salary > svitoch[max].salary then
         max:=i;
     end;
     getmax:=max;
end;

现在,您可以在第一个周期之后使用此结构而不是第二个结构来获得最大工资值(和名称)。

i:=getmax();
writeln(svitoch[i].name);  {if you want to write in your case}
writeln(svitoch[i].lastName);
writeln(svitoch[i].salary);

答案 1 :(得分:0)

嗯,显然你需要查看你现在拥有的工人列表(数组),寻找薪水最高的工人。

所以写一个接受该数组作为参数的函数(不是一个过程)。

该函数应该将第一个worker的工资存储到一个变量中,然后遍历其余的worker;如果工人的工资高于您已经存储的工资,请将存储的值替换为新的更高工资并继续循环。当您到达列表末尾时,您已经存储了最高薪水,然后您将从您的职能部门返回。

提示:您应该使用Low(YourArray)作为循环的起点,High(YourArray)作为循环的停止点,这样您的工作人数就没有限制了可以传递给该数组中的函数。