Так как просто прямая не возможна, то
проверить есть ли преграда по прямой с права (подъем)
если нет, то спуститься вниз со смещением в право, рассчитав новое положение.
закрасить клетку с предыдущими координатами
если препятствие есть, то выполнить подъем со смещением в право, рассчитав новое положение
закрасить клетку с предыдущими координатами.
Var
m : array [1..7,1..5] of Real;
i,j : Byte;
sr : Real;
Begin
For i:=1 to 7 do
Begin
sr:=0;
For j:=1 to 5 do
Begin
m[i,j]:=Random(100);
Write(m[i,j]:5);
sr:=sr+m[i,j];
end;
Writeln(' Ср. знач. строки: ',sr/5:5:1);
end;
end.
Будем считать, что ввод значения = 0 признак окончания ввода членов последовательности. Тогда можно попробовать так:
var a,max,maxn,n: integer;
begin
readln(a);
max:=a; maxn:=1;n:=1;
while a<>0 do begin
readln(a);
n:=n+1;
if a>max then begin
max:=a; maxn:=n;
end;
end;
writeln('Максимальный : ',max,' номер : ',maxn);
end.
Проверено, работает на Паскаль АВС:
Program rabota_s_massivom;
uses crt;
label metka;
const N=30;
var M: array[1..N] of integer;
i,k,s,kmax,reserve:integer;
begin
for i:=1 to N do
begin
write('Введите ',i,'-й элемент: '); readln(M[i]);
end;
writeln('Массив:');
for i:=1 to N do
begin
write(M[i],' ');
end;
k:=1; {Число элементов в текущей последовательности. Изначально считаем, что последовательность состоит из одного (первого) элемента}
{Ищем первый нечётный элемент:}
repeat
reserve:=reserve+1;
until (m[reserve] mod 2 = 1) or (reserve = 30);
writeln(reserve);
if (m[reserve] mod 2 = 0) and (reserve = 30) then
begin
writeln('Все числа чётные. Искомая последовательность не существует');
goto metka;
end;
s:=M[reserve]; {Сумма элементов текущей последовательности пока что равна первому нечётному элементу}
kmax:=0; {Наибольшая длина последовательности}
for i:=reserve+1 to n do {Перебираем все элементы, начиная с первого нечётного}
begin
if (m[i] mod 2 = 1)
then {Если текущее число всё ещё нечетно}
begin
s:=s+m[i]; {Увеличиваем сумму последовательности}
k:=k+1 {Увеличиваем счётчик длины последовательности}
end
else {Если встретилось четное число}
begin
if k>kmax then {Проверяем, не является ли полученная последовательность длиннее нашего максимума}
begin {Если да:}
kmax:=k; {Запоминаем новую длину последовательности}
reserve:=s {Запоминаем сумму её элементов}
end;
k:=0; {Устанавливаем длину новой последовательности равной 0}
s:=0 {Сумма элементов этой последовательности тоже пока что = 0}
end;
end;
if k>kmax then {Если самая длинная последовательность находится в конце массива, проверим ещё раз текущий максимум}
begin
kmax:=k;
reserve:=s
end;
writeln('самая длинная последовательность нечётных чисел состоит из ',kmax,' элементов');
writeln('и сумма этой последовательности равна ',reserve);
metka: end.