Куб состоит из 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). Список действий:

  1. Пользователю предлагается ввести значение переменной n (размер куба).
  2. Далее следует заполнение матрицы m значениями, которые определяют, является ли элемент куба прозрачным (0) или непрозрачным (не 0).
  3. Затем начинается поиск просветов по координате х. Для каждого значения х от 0 до n-1 перебираются все элементы матрицы m[i][a*n+b], где a - произвольное значение от 0 до n-1. Если элемент равен 0, то увеличивается счетчик k, и если k достигает значения n, то выводится сообщение о нахождении просвета с соответствующими координатами.
  4. После этого начинается поиск просветов по координате z. Для каждого значения z от 0 до n*n-1 перебираются все элементы матрицы m[j][i], где j - произвольное значение от 0 до n-1. Если элемент равен 0, то увеличивается счетчик k, и если k достигает значения n, то выводится сообщение о нахождении просвета с соответствующими координатами.
  5. Наконец, начинается поиск просветов по координате y. Для каждого значения y от 0 до n-1 перебираются все элементы матрицы m[i][j]. Если элемент равен 0, то увеличивается счетчик k, и если k достигает значения n, то выводится сообщение о нахождении просвета с соответствующими координатами.
  6. В конце программы пользователю предлагается нажать любую клавишу для выхода. Если в процессе выполнения программы ни одного просвета не найдено, то выводится сообщение об отсутствии просветов.

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


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

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

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