Паскаль. В целочисленном массиве из 10 элементов найти предмаксимальное по значению число , вывести его позицию. Например, 2 0 3 1 1 максимальное число 3, предмаксимальное 2 его позиция 1.

Ответы

Ответ дал: fedrfedr
1

Ответ:

program predmax;

function GetMax (aa: array of Integer): Integer;

var

 i, imax: Integer;

begin

 imax := Low (aa);

 for i := Low (aa) + 1 to High (aa) do

   if aa [i] > aa [imax] then

     imax := i;

 GetMax := imax + 1;

end;

var

 a: array [1..10] of Integer;

 i, imax: Integer;

begin

 Write ('Массив: ');

 for i := Low (a) to High (a) do

   Read (a [i]);

 a [GetMax (a)] := - MaxInt;

 imax := GetMax (a);

 Write ('Предмаксимальный элемент a[', imax, '] = ', a [imax]);

 ReadLn;

 ReadLn;

end.


BobbyFresnel: Можно узнать, в каком компиляторе Вы это запускали? А то у меня Free Pascal и PascalABС.NET оба ругаются на ошибку.
BobbyFresnel: Free Pascal Compiler version 2.6.2-8 [2014/01/22] for x86_64
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling main.pas
main.pas(19,10) Error: Identifier not found "Result"
BobbyFresnel: Program2.pas(22) : Нельзя преобразовать тип array [1..10] of integer к array of integer
BobbyFresnel: Я хотел посмотртеь, что программа будет делать, если ввести все 10 одинаковых элементов, но не получилось из-за ошибок.
fedrfedr: Массив: 1 1 1 1 1 1 1 1 1 1
Предмаксимальный элемент a[2] = 1
fedrfedr: Компилировал на Delphi, заменил Result на GetMax для лучшей совместимости
BobbyFresnel: Вы бы писали, что на Дельфи, а то другие мучаются )))))
BobbyFresnel: Разве 1 предшествует максимальному, если он - тоже единица? Я бы сказал, что предмаксимального тут нет. Хотя, дело вкуса.
Ответ дал: BobbyFresnel
0

===== PascalABC.NET =====

begin

 var a := ReadArrInteger('Введите 10 чисел:', 10);

 var amax := a.Max;

 var s := a.Where(p -> p <> amax).OrderDescending;

 if s.Count > 0 then

 begin

   var apmax := s.First;

   var i := a.FindIndex(p -> p = apmax);

   Println('Предмаксимальный элемент', apmax, 'номер', i+1)

 end

 else

   Println('Нет решения: все элементы в массиве одинаковы')

end.

Приложения:
Вас заинтересует