Составьте алгоритм, закрашивающий все внутренние клетки, прилегающие к стене. Длины стен неизвестны. Особое внимание обратите на то, что программа должна давать верный результат при любых длинах стен. Проверять работо программы надо несколько раз, создавая различные варианты стартовых обстановок, например, при длине стены 1 клетка, при длине стены 8 клеток. На рисунках представлены стартовая обстановка и результат.
begin
var a: array[1..N] of real;
var i: integer;
var growing: boolean;
for i := 1 to N do begin
readln(a[i]);
end;
growing := true;
for i := 2 to N do begin
if a[i] <= a[i - 1] then begin
growing := false;
break;
end;
end;
writeln(growing);
end.
const m = 5;
const n = 4;
const limit = 100;
begin
var matrix: array[1..m] of array[1..n] of real;
var matrixb: array[1..m - 1] of array[1..n - 1] of real;
var row, col, rb, cb, lowest_row, lowest_col: integer;
var lowest: real;
var p: boolean;
lowest := limit;
for row := 1 to m do begin
for col := 1 to n do begin
matrix[row][col] := random(limit - 1);
if matrix[row][col] < lowest then begin
lowest := matrix[row][col];
lowest_col := col;
lowest_row := row;
end;
write(matrix[row][col], ' ');
end;
writeln('');
end;
writeln('');
writeln(lowest);
writeln('');
rb := 1;
for row := 1 to m do begin
p := false;
cb := 1;
for col := 1 to n do begin
if (not (col = lowest_col)) and (not (row = lowest_row)) then begin
p := true;
matrixb[rb][cb] := matrix[row][col];
cb := cb + 1;
end;
end;
if p then begin
rb := rb + 1;
end;
end;
for rb := 1 to m - 1 do begin
for cb := 1 to n - 1 do begin
write(matrixb[rb][cb], ' ');
end;
writeln('');
end;
end.
Алгоритм
Заносим в переменную res (результат) число 0. Оно заведомо меньше любого из натуральных чисел в последовательности.
Читаем очередное число в последовательности. Если оно больше res и при этом не превышает 15, записываем его в res. Если оно равно нулю, чтение прекращаем и выводим значение res.
var
res,num:integer;
begin
res:=0;
repeat
Read(num);
if (num>res) and (num<=15) then res:=num
until num=0;
Writeln(res)
end.