Задача 4 урок 15

Задача 4 урок 15

Пользователь вводит массив целых чисел из 7 элементов. Найдите из них два самых больших числа и выведите их на экран.
Примеры для проверки:

1 2 2 1 1 1 1
Ответ: 2 2
-1 -2 -2 -1 -1 -1 -1
Ответ: -1 -1
-1 -2 -2 5 4 -1 -1
Ответ: 5 4
program zadacha4;
var a: array [1..7] of integer;
  i, j, k: integer;

begin
  for i:=low(a) to high(a) do
  begin
    writeln('Vvedite element massiva nomer ',i,':');
    readln(a[i]);
  end;
  for i:=low(a) to high(a) do
    if a[i] > j then
      j:=a[i];
  for i:=low(a) to high(a) do
    if (a[i] > k) and (a[i] < j) then
      k:=a[i];
  writeln();
  writeln('Naibolshee chislo: ',j, '     Vtoroe chislo: ',k);
  readln();
end.
vedro-compota's picture

  1. решите 1 циклом - один раз читаем массив и на выходе получаем ответ
  2. данное решение не будет работать для отрицательного набора чисел

_____________
матфак вгу и остальная классика =)

program zadacha4;
var a: array [1..7] of integer;
  i, j, k: integer;

begin
  for i:=low(a) to high(a) do
  begin
    writeln('Vvedite element massiva nomer ',i,':');
    readln(a[i]);
  end;
  j:=a[1];
  if a[1] >= a[2] then
    k:=a[2]
  else
  begin
    j:=a[2];
    k:=a[1];
  end;
  for i:=3 to high(a) do begin
    if a[i] > j then
    begin
      k:=j;
      j:=a[i];
    end
    else
      if (a[i]>k) and (a[i]<=j) then
        k:=a[i];
  end;
  writeln();
  writeln('Naibolshee chislo: ',j, '     Vtoroe chislo: ',k);
  readln();
end. 
vedro-compota's picture

либо так:

  if a[1] >= a[2] then
    j:=a[1];
    k:=a[2]
  else
  begin
    j:=a[2];
    k:=a[1];
  end;

либо так:

    j:=a[1];
    k:=a[2];

  if a[1] < a[2] then
  begin
    j:=a[2];
    k:=a[1];
  end;

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

 if a[i] > j then
    begin
      k:=j;
      j:=a[i];
    end
    else
      if (a[i]>k) and (a[i]<=j) then
        k:=a[i];

-- судя по всему есть лишнее подвыражение в блоке else if

_____________
матфак вгу и остальная классика =)