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

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

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

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

Листинг программы
  1. uses crt;
  2. var a:array[1..50,1..50] of byte;
  3. n,m,i,j,l,ks,f,np,k:byte;
  4. begin
  5. clrscr;
  6. randomize;
  7. writeln('Vvedite razmery polya:');
  8. write('Stroki m=');readln(m);
  9. write('Stolbcy n=');readln(n);
  10. writeln('Pole:');
  11. for i:=1 to m do
  12. begin
  13. for j:=1 to n do
  14. begin
  15. a[i,j]:=random(2);{ноли и единицы}
  16. write(a[i,j]:3);
  17. end;
  18. writeln;
  19. end;
  20. writeln('Stolbcy po usloviyu:');
  21. ks:=0;{пока нужных столбцов нет}
  22. for j:=2 to n do {идем по столбцам нечиная со второго}
  23. begin
  24. f:=0;np:=0;{пока невидимых(f)непрозрачных{np}
  25. for i:=1 to m do {по столбцу вниз}
  26. if a[i,j]=1 then {если непрозрачный}
  27. begin
  28. np:=np+1;{считаем}
  29. k:=0;{влево пока непрозрачных нет}
  30. for l:=j-1 downto 1 do{идем влево по строке}
  31. if a[i,l]=1 then{если попался непрозрачный}
  32. begin
  33. k:=1;{фиксируем}
  34. break;{дальше не проверяем}
  35. end;
  36. if k=1 then f:=f+1;{если невидим слева, считаем}
  37. end;
  38. if f=np then{если невидимых=непрозрачных, т.е. все непрозрачные невидимы}
  39. begin
  40. writeln('Stolbec ',j);{выводим номер столбца}
  41. ks:=1;{фиксируем что такой столбец есть}
  42. end;
  43. end;
  44. if ks=0 then writeln('Takih stolbcov net!');{если ни одного, сообщаем}
  45. readln
  46. end.
Может кто то перевести этот код на Си? Помогите пожалуйста.

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

textual
Листинг программы
  1. for (j = 0; j < n; j++) {
  2.         c = 1;
  3.         for (i = 0; i < m; i++) {
  4.             if (a[i][j] == 1) {
  5.                 for (k = (j - 1); k > -2; k--) {
  6.                     if (k == -1) {
  7.                         c = 0;
  8.                         break;
  9.                     } else if (a[i][k] == 1) {
  10.                         break;
  11.                     }
  12.                 }  
  13.             }
  14.         }
  15.     }

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

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

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

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


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

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

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы