Найти все столбцы поля, все непрозрачные кубики которых невидимы для наблюдателя, расположенного слева - C (СИ) (149770)

Узнай цену своей работы

Формулировка задачи:

Поле размером m x n заполнено прозрачными и непрозрачными кубиками. Найдите все столбцы поля, все непрозрачные кубики которых невидимы для наблюдателя, расположенного слева

Помогите пожалуйста с кодом
Все еще актуально

Решение задачи: «Найти все столбцы поля, все непрозрачные кубики которых невидимы для наблюдателя, расположенного слева»

textual
Листинг программы
uses crt; 
var a:array[1..50,1..50] of byte; 
n,m,i,j,l,ks,f,np,k:byte; 
begin 
clrscr; 
randomize; 
writeln('Vvedite razmery polya:'); 
write('Stroki m=');readln(m); 
write('Stolbcy n=');readln(n); 
writeln('Pole:'); 
for i:=1 to m do 
begin 
for j:=1 to n do 
begin 
a[i,j]:=random(2);{ноли и единицы} 
write(a[i,j]:3); 
end; 
writeln; 
end; 
writeln('Stolbcy po usloviyu:'); 
ks:=0;{пока нужных столбцов нет} 
for j:=2 to n do {идем по столбцам нечиная со второго} 
begin 
f:=0;np:=0;{пока невидимых(f)непрозрачных{np} 
for i:=1 to m do {по столбцу вниз} 
if a[i,j]=1 then {если непрозрачный} 
begin 
np:=np+1;{считаем} 
k:=0;{влево пока непрозрачных нет} 
for l:=j-1 downto 1 do{идем влево по строке} 
if a[i,l]=1 then{если попался непрозрачный} 
begin 
k:=1;{фиксируем} 
break;{дальше не проверяем} 
end; 
if k=1 then f:=f+1;{если невидим слева, считаем} 
end; 
if f=np then{если невидимых=непрозрачных, т.е. все непрозрачные невидимы} 
begin 
writeln('Stolbec ',j);{выводим номер столбца} 
ks:=1;{фиксируем что такой столбец есть} 
end; 
end; 
if ks=0 then writeln('Takih stolbcov net!');{если ни одного, сообщаем} 
readln 
end.

Объяснение кода листинга программы

  1. Объявлены переменные: a (массив), n, m, i, j, l, ks, f, np, k (byte).
  2. Выполнено очищение экрана и инициализация генератора случайных чисел.
  3. Пользователю предлагается ввести размеры поля (m строк, n столбцов).
  4. Выводится поле (все элементы массива a), где каждый элемент представлен в виде трехзначного числа (от 0 до 2).
  5. Задаются начальные условия для переменных ks, f, np равные 0.
  6. В цикле перебираются все столбцы (начиная со второго) для проверки наличия невидимых столбцов.
  7. В каждой строке (от первой до m) проверяется наличие непрозрачных ячеек (равных 1) в текущем столбце.
  8. Если в текущей строке найдена непрозрачная ячейка, то перебираются все ячейки слева от нее до тех пор, пока не будет найдена непрозрачная ячейка.
  9. Если в текущей строке найдена непрозрачная ячейка и при этом в предыдущей строке также найдена непрозрачная ячейка, то увеличивается счетчик f.
  10. Если значение f равно количеству непрозрачных ячеек np, то выводится номер столбца и переменная ks принимает значение 1.
  11. После проверки всех строк в каждом столбце выводится сообщение о наличии или отсутствии невидимых столбцов.
  12. Код ожидает ввода от пользователя для завершения работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы