Дана последовательность не более N ненулевых целых чисел, последним числом в...

0 голосов
28 просмотров
Дана последовательность
не более N
ненулевых целых чисел, последним числом в последовательности является
0. Ввести эту последовательность в одномерный массив и
вычислить хаpактеристики
.Найти порядковые номера и сумму двух наибольших элементов. ( в Паскаль )



Информатика (20 баллов) | 28 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Type
  tE = record
    v: integer;
    p: integer;
  end;

procedure Swap2E(var a: tE; var b: tE);
// Обмен содержимым пары записей
var
  Buff: integer;
begin
  Buff := a.v; a.v := b.v; b.v := Buff;
  Buff := a.p; a.p := b.p; b.p := Buff
end;

procedure Swap3E(var a: tE; var b: tE; var c: tE);
// Обмен содержимым трех записей
// Предполагается, что до вызова процедуры a.v>=b.v,
// после вызова значение с.v помещается в a.v или b.v так,
// чтобы большее из трех значений попало в a.v, а следующее
// по величине попало в b.v. Младшее значение теряется. 
begin
  if c.v >= a.v then begin
    Swap2E(a, b); Swap2E(a, c)
  end
  else
  if c.v > b.v then Swap2E(b, c);
end;

const
  n = 50;

var
  a: array[1..n] of integer;
  R1, R2, T: tE;
  i, e, m: integer;

begin
  i := 1;
  writeln('Вводите числа, 0 - конец ввода');
  repeat
    read(e);
    a[i] := e;
    i:=i+1;
  until e = 0;
  m := i;
  if a[1] > a[2] then begin
    R1.v := a[1]; R1.p := 1;
    R2.v := a[2]; R2.p := 2
  end
  else begin
    R1.v := a[2]; R1.p := 2;
    R2.v := a[1]; R2.p := 1
  end;
  for i := 3 to m do
  begin
    T.v := a[i];
    T.p := i;
    Swap3E(R1, R2, T)
  end;
  writeln('Максимальные значения имеют элементы с номерами ', R1.p, ' и ', R2.p);
  writeln('Сумма этих элементов равна ', R1.v + R2.v)
end.

Контрольный пример:

Вводите числа, 0 - конец ввода
18
6
13
40
14
52
0
Максимальные значения имеют элементы с номерами 6 и 4
Сумма этих элементов равна 92



(142k баллов)