Uses crt;const h=100;var a: array [1..h,1..h] of integer; n,x,y,max: integer;
begin write('Длина матрицы= '); readln(n); // Enter for x:=1 to n do for y:=1 to n do begin write('a[',x,',',y,']= '); readln(a[x,y]); end; // max:=a[1,1]; while x<>n do begin if a[x,x] > max then begin max:=a[x,x]; y:=x; end; inc(x); end; writeln('Максимальный элемент равен ',max,'.Его координаты (',y,';',y,').'); <span>end.</span>
Const
M = 3;
N = 4;
Var
A:array[1..M,1..N] of integer;
i,j,k:integer;
Begin
Randomize;
WriteLn('Исходный массив:');
For i:= 1 to M do
Begin
For j:= 1 to N do
Begin
A[i,j]:=random(71)-30;
Write(A[i,j]:3,' ')
End;
WriteLn;
End;
Write('Номер столбца: ');
For j:= 1 to N do
Write(j:3,' ');
WriteLn;
Write('Искомое кол-во:');
For j:= 1 to N do
Begin
k:=0;
For i:= 1 to M do
if A[i,j]>0 then k:=k+1;
Write(k:3,' ');
End;
End.
Пример:
Исходный массив:
33 -21 -24 4
-20 28 -29 25
-15 -1 11 3
Номер столбца: 1 2 3 4
Искомое кол-во: 1 1 1 3
Размер = 48 Кбайт
Время передачи = 20 сек
Скорость передачи = 48/20 = 2.4 Кбайт/сек
Размер файла, передаваемого за 2 минуты при той же скорости = 2.4*120 = 288 Кбайт
Поскольку тут речь о последовательности неизвестной длины, вводимой с клавиатуры до появления нуля, а условие позволяет для каждого вводимого числа сразу решить, должно ли оно входить в сумму, задача решается без использования массива и условие "<span>Количество чисел не превышает 1000" - это просто ловушка для наивных с тем, чтобы в случае использования массива длиной 1000 объявить затем решение неэффективным по памяти.
</span><em>1. Решение на современной версии Паскаля</em>
<em>PascalABC.NET 3.2, сборка 1389 от 01.03.2017</em>
<em>Внимание! Если программа не работает, обновите версию!</em>
begin
var s:=ReadSeqIntegerWhile(n->n<>0)
.Where(n->(n mod 3=0) and (n mod 10=6)).Sum;
Writeln('Сумма отобранных чисел равна ',s)
end.
<em>Пример</em>
15 36 26 72 25 96 83 0
Сумма отобранных чисел равна 132
<em>2. Решение "по-школьному"</em>
var
n,s:integer;
begin
s:=0;
repeat
Read(n);
if (n mod 3=0) and (n mod 10=6) then s:=s+n
until n=0;
Writeln('Сумма отобранных чисел равна ',s)
end.
<u>Пример</u>
15 36 26 72 25 96 83 0
Сумма отобранных чисел равна 132
Const n=10;
var
i: integer;
var a: array[1..n] of integer;
begin
for i:=1 to n do begin
a[i]:=random(1,50);
write (a[i]:3);
end;
writeln;
writeln ('Элементы, кратные 5:');
for i:=1 to n do begin
if a[i] mod 5 =0
then write (a[i]:3);
end;
end.
===================================
30 45 2 5 26 47 30 7 4 9
Элементы, кратные 5:
30 45 5 30
===================================