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

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

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

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

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.
Может кто то перевести этот код на Си? Помогите пожалуйста.

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

textual
Листинг программы
for (j = 0; j < n; j++) {
        c = 1;
        for (i = 0; i < m; i++) {
            if (a[i][j] == 1) {
                for (k = (j - 1); k > -2; k--) {
                    if (k == -1) {
                        c = 0;
                        break;
                    } else if (a[i][k] == 1) {
                        break;
                    }
                }   
            }
        }
    }

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

В данном коде выполняется следующая задача: нужно найти все столбцы поля, все непрозрачные кубики которых невидимы для наблюдателя, расположенного слева. Алгоритм решения задачи следующий:

  1. Перебираем все столбцы поля (переменная j).
  2. Для каждого столбца находим первый непрозрачный кубик (переменная c).
  3. Если такой кубик найден, то непрозрачными кубиками в этом столбце являются все кубики, которые находятся выше него (переменная k).
  4. Перебираем все эти кубики, проверяя, является ли каждый из них непрозрачным.
  5. Если непрозрачный кубик найден, то он помечается как прозрачный (переменная c = 0) и дальнейший поиск непрозрачных кубиков в этом столбце прекращается.
  6. После завершения поиска непрозрачных кубиков в каждом столбце, переходим к следующему столбцу. Таким образом, после выполнения данного кода, в переменной c будет содержаться информация о том, является ли каждый кубик поля непрозрачным или прозрачным.

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


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

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

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