Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. Есть ли хоть один просвет по каждому из трех измерений? Если так, вывести координаты - C (СИ)
Формулировка задачи:
Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. Есть ли хоть один просвет по каждому из трех измерений? Если так, вывести координаты каждого просвета заранее спасибо
Решение задачи: «Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. Есть ли хоть один просвет по каждому из трех измерений? Если так, вывести координаты»
textual
Листинг программы
// Kubik.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <stdio.h> #include <conio.h> int _tmain(int argc, _TCHAR* argv[]) { int m[1000][1000]; int i, j, k; int a, b, c; int n; printf("Input n\n"); scanf("%d", &n); for (i = 0; i < n; i++) for (j = 0; j < n*n; j++) { scanf("%d", &m[i][j]); } //1. Начинаем поиск просветов по координате х for (i = 0; i < n; i++) for (a = 0; a < n; a++) { k = 0; for (b = 0; b < n; b++) { if (m[i][a*n+b] == 0) k+=1; if (k == n) printf("Found clearance. Coordinates x = 1 - %d; y = %d; z = %d\n", n, a+1, i+1); } } //2. Начинаем поиск просветов по координате z for (i = 0; i< n*n; i++) { k = 0; for (j = 0; j < n; j++) { if ( m[j][i] == 0 ) k+=1; if ( k == n ) printf("Found clearance. Coordinates x = %d; y = %d; z = 1 - %d\n", j, i/n+1, n); } } //3. Начинаем поиск просвета по координате y for (i = 0; i<n; i++) for (j = 0; j < n; j++) { if ( m[i][j] == 0 ) { k = 1; for (a = 0; a < n-1; a++) { if (m[i][j+a] == 0) k+=1; } if (k == n) printf("Found clearance. Coordinates x = %d; y = 1 - %d; z = %d\n", j+1, n, i+1); } } getch(); return 0; }
Объяснение кода листинга программы
В этом коде реализуется алгоритм поиска просветов (прозрачных элементарных кубиков) в кубе, состоящем из n3 элементарных кубиков. Просветы ищются по каждой из трех осей координат (x, y, z). Список действий:
- Пользователю предлагается ввести значение переменной n (размер куба).
- Далее следует заполнение матрицы m значениями, которые определяют, является ли элемент куба прозрачным (0) или непрозрачным (не 0).
- Затем начинается поиск просветов по координате х. Для каждого значения х от 0 до n-1 перебираются все элементы матрицы m[i][a*n+b], где a - произвольное значение от 0 до n-1. Если элемент равен 0, то увеличивается счетчик k, и если k достигает значения n, то выводится сообщение о нахождении просвета с соответствующими координатами.
- После этого начинается поиск просветов по координате z. Для каждого значения z от 0 до n*n-1 перебираются все элементы матрицы m[j][i], где j - произвольное значение от 0 до n-1. Если элемент равен 0, то увеличивается счетчик k, и если k достигает значения n, то выводится сообщение о нахождении просвета с соответствующими координатами.
- Наконец, начинается поиск просветов по координате y. Для каждого значения y от 0 до n-1 перебираются все элементы матрицы m[i][j]. Если элемент равен 0, то увеличивается счетчик k, и если k достигает значения n, то выводится сообщение о нахождении просвета с соответствующими координатами.
- В конце программы пользователю предлагается нажать любую клавишу для выхода. Если в процессе выполнения программы ни одного просвета не найдено, то выводится сообщение об отсутствии просветов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д