В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
zamyatkinayowf0rc
zamyatkinayowf0rc
28.02.2022 00:10 •  Информатика

2. На бесконечном поле имеются две вертикальные стены и одна горизонтальная, соединяющая нижний конец правой и верхний конец левой вертикальных стен. Длины стен неизвестны. Робот находится в клетке, расположенной слева от верхнего края правой вертикальной стены, рядом со стеной.
На рисунке указан один из возможных расположения стен и Робота (Робот обозначен буквой «Р»).

Напишите для Робота алгоритм, закрашивающий все клетки, примыкающие к вертикальным стенам справа. Робот должен закрасить только клетки, удовлетворяющие данному условию.
Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).

Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться.

Показать ответ
Ответ:
нуралик
нуралик
14.09.2022 17:00
// PascalABC.NET 3.1, сборка 1200 от 13.03.2016
begin
  var a:=MatrixRandom(7,7,0,9);
  var k:=0;
  for var i:=0 to 6 do begin
    for var j:=0 to 6 do begin
      Write(a[i,j]:3);
      if a[i,j] in [1..5] then Inc(k)
      end;
    Writeln
    end;
  Writeln('Кол-во элементов на [1,5]: ',k)
end.

Тестовое решение:
  2  1  7  3  3  2  7
  9  2  9  2  0  5  5
  4  2  6  9  4  6  0
  1  0  3  5  4  5  9
  6  3  6  0  2  0  8
  0  8  4  3  2  1  8
  6  0  4  4  5  4  0
Кол-во элементов на [1,5]: 27

Вариант "совсем для школы"

const
  n=7;
var
  a:array[1..n,1..n] of integer;
  i,j,k:integer;
begin
  Randomize;
  k:=0;
  for i:=1 to n do begin
    for j:=1 to n do begin
      a[i,j]:=Random(10);
      Write(a[i,j]:3);
      if a[i,j] in [1..5] then Inc(k)
      end;
    Writeln
    end;
  Writeln('Кол-во элементов на [1,5]: ',k)
end.
0,0(0 оценок)
Ответ:
maga050508
maga050508
21.03.2023 12:38
Var m : array[0..6] of Integer;
  i,k,N : Integer;
Begin
  For i:=0 to 6 do m[i]:=0;
  Readln(N);
  k:=6;
  While N>0 do
  Begin
    If N>=Power(2,k) then
    Begin
      N:=N-Trunc(Power(2,k));
      Inc(m[k]);
    end else Dec(k);
  end;
  For i:=0 to 6 do Writeln(Power(2,i),'  ',m[i],' шт.');
end.

Еще вариант:
Const
  NN = 7;
  money : array[1..7] of Integer = (1,2,4,8,16,32,64);
Var m : array[1..NN] of Integer;
  i,k,N : Integer;
Begin
  For i:=1 to NN do m[i]:=0;
  Readln(N);
  k:=NN;
  While N>0 do
  Begin
    If N>=money[k] then
    Begin
      N:=N-money[k];
      Inc(m[k]);
    end else Dec(k);
  end;
  For i:=1 to NN do Writeln(money[i],'  ',m[i],' шт.');
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота