如何用 Pascal 求第二大值
How to find the second largest value with Pascal
我在显示第二大值时遇到问题。
这是代码
program testeFeldZweitMax (input, output);
{ testet die Funktion FeldZweitMax }
const
FELDGROESSE = 10;
type
tIndex = 1..FELDGROESSE;
tFeld = array [tIndex] of integer;
var
Feld : tFeld;
i : integer;
function FeldZweitMax (var inFeld : tFeld) : integer;
var
Maximum: integer;
j : tIndex;
begin
Maximum := inFeld[1];
for j := 2 to FELDGROESSE do
if inFeld[j] > Maximum then
Maximum := inFeld[j];
FeldZweitMax := Maximum
end;
begin { Testprogramm }
writeln('Bitte geben Sie ', FELDGROESSE, ' Zahlen ein:');
for i := 1 to FELDGROESSE do
read (Feld [i]);
writeln('Die zweitgroesste Zahl ist ', FeldZweitMax (Feld), '.');
end. { testeFeldZweitMax }
如代码所示,仅显示最大值。我需要一些帮助来显示第二大值。
var
Maximum, ZweitMax: integer;
j : tIndex;
begin
Maximum := inFeld[1];
ZweitMax := inFeld[2];
for j := 1 to FELDGROESSE do
begin
if inFeld[j] < Maximum then
inFeld[j] := Maximum;
Maximum := ZweitMax;
ZweitMax := inFeld[j];
FeldZweitMax := ZweitMax
end
end;
它不能很好地工作。给我一些建议?
考虑到您(在某个时候)具有值 Maximum > ZweitMax
(分别为 f.ex.5 和 2)。
下一个要评估的值 (x) 可能是
- a) x > 最大值
- b) x > ZweitMax(但小于最大值)
- c) x < ZweitMax
如果 a) Maximum 应该变成 x 而 ZweitMax 应该变成之前的 Maximum
如果 b) Maximum 应该保留并且 ZweitMax 应该变成 x
如果 c) Maximum 和 ZweitMax 没有变化(IOW,不需要采取任何行动)
一些提示:
在开始评估实际输入值之前,将 Maximum 和 ZweitMax 初始化为可能的最小值(根据类型)。
情况 a) 在将新值分配给最大值之前将 ZweitMax 设置为先前的最大值。
我在显示第二大值时遇到问题。
这是代码
program testeFeldZweitMax (input, output);
{ testet die Funktion FeldZweitMax }
const
FELDGROESSE = 10;
type
tIndex = 1..FELDGROESSE;
tFeld = array [tIndex] of integer;
var
Feld : tFeld;
i : integer;
function FeldZweitMax (var inFeld : tFeld) : integer;
var
Maximum: integer;
j : tIndex;
begin
Maximum := inFeld[1];
for j := 2 to FELDGROESSE do
if inFeld[j] > Maximum then
Maximum := inFeld[j];
FeldZweitMax := Maximum
end;
begin { Testprogramm }
writeln('Bitte geben Sie ', FELDGROESSE, ' Zahlen ein:');
for i := 1 to FELDGROESSE do
read (Feld [i]);
writeln('Die zweitgroesste Zahl ist ', FeldZweitMax (Feld), '.');
end. { testeFeldZweitMax }
如代码所示,仅显示最大值。我需要一些帮助来显示第二大值。
var
Maximum, ZweitMax: integer;
j : tIndex;
begin
Maximum := inFeld[1];
ZweitMax := inFeld[2];
for j := 1 to FELDGROESSE do
begin
if inFeld[j] < Maximum then
inFeld[j] := Maximum;
Maximum := ZweitMax;
ZweitMax := inFeld[j];
FeldZweitMax := ZweitMax
end
end;
它不能很好地工作。给我一些建议?
考虑到您(在某个时候)具有值 Maximum > ZweitMax
(分别为 f.ex.5 和 2)。
下一个要评估的值 (x) 可能是
- a) x > 最大值
- b) x > ZweitMax(但小于最大值)
- c) x < ZweitMax
如果 a) Maximum 应该变成 x 而 ZweitMax 应该变成之前的 Maximum
如果 b) Maximum 应该保留并且 ZweitMax 应该变成 x
如果 c) Maximum 和 ZweitMax 没有变化(IOW,不需要采取任何行动)
一些提示:
在开始评估实际输入值之前,将 Maximum 和 ZweitMax 初始化为可能的最小值(根据类型)。
情况 a) 在将新值分配给最大值之前将 ZweitMax 设置为先前的最大值。