Вданной последовательности целых чисел найти минимальное значение среди неотрицательных элементов и все номера членов последовательности, равных ему на паскаль написать
Var a: array [1..1000] of integer; i, n, min, amount: integer; begin read(n); {Сначала считываем кол-во элементов} for i := 1 to n do read(a[i]); min := 10000; amount := 0; for i :=1 to n do if (a[i] < min) and (a[i] >= 0) then min := a[i]; for i := 1 to n do if a[i] = min then amount := amount + 1; writeln('Min: ', min, ', amount: ', amount); end.
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018 Внимание! Если программа не работает, обновите версию!
procedure Input(var a:array of integer); begin a:=ReadArrInteger('Вводите через пробел рост в см:',a.Length) end;
procedure MyMax(a:array of integer; var mr:integer); begin mr:=a.Max end;
procedure KMax(a:array of integer; mx:integer; var km:integer); begin km:=a.Where(t->t=mx).Count end;
begin var n:=ReadInteger('Количество учеников:'); var r:=new integer[n]; Input(r); var maxR,kol:integer; MyMax(r,maxR); KMax(r,maxR,kol); Writeln('Максимальный рост ',maxR,' имеют ',kol,' чел.') end.
Пример Количество учеников: 5 Вводите через пробел рост в см: 170 168 171 159 171 Максимальный рост 171 имеют 2 чел.
На самом деле, это задание - прекрасный пример того, как НЕ НУЖНО использовать процедуры. Потому что без процедур эта же задача решается гораздо короче, занимает меньше памяти и быстрее работает. Ниже - текст такой программы в качестве иллюстрации написанного.
begin var a:=ReadArrInteger('Вводите через пробел рост в см:', ReadInteger('Количество учеников:')); var maxR:=a.Max; var kol:=a.Where(t->t=maxR).Count; Writeln('Максимальный рост ',maxR,' имеют ',kol,' чел.') end.
begin
read(n); {Сначала считываем кол-во элементов}
for i := 1 to n do
read(a[i]);
min := 10000;
amount := 0;
for i :=1 to n do
if (a[i] < min) and (a[i] >= 0) then
min := a[i];
for i := 1 to n do
if a[i] = min then
amount := amount + 1;
writeln('Min: ', min, ', amount: ', amount);
end.