Cклавиатуры ввести три целых числа, найти: а) количество отрицательных нечетных чисел в) максимальное трехзначное четное положительное число или определить, что такого числа нет
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.
program raf105;
var a:array[1..3] of integer;
i,za,zb:integer;
begin
write('Введите три числа: ');
readln(a[1],a[2],a[3]);
for i:=1 to 3 do
begin
if (a[i]<0) and ((a[i] mod 2) <> 0)
then za:= za+1
end;
for i:=1 to 3 do
begin
if (a[i]>99) and (a[i]<1000) and ((a[i] mod 2) = 0) and (a[i]>zb)
then zb:=a[i];
end;
writeln('а) ',za);
if zb<>0
then writeln('в) ',zb)
else writeln('в) Не найдено');
end.
Программа написана на языке PascalABC.NET