Форум программистов, компьютерный форум CyberForum.ru

Куб состоит из n[SUP]3[/SUP] прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это т - C++

Восстановить пароль Регистрация
 
SvI
-79 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 45
23.12.2012, 18:20     Куб состоит из n[SUP]3[/SUP] прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это т #1
Задание: Куб состоит из n3 прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это так, вывести координаты каждого просвета.

Ребят, помогите решить вот такую задачку, пожалуйста. Она простая, но я ещё не въехал в тему, только начинаю программировать. Буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2012, 18:20     Куб состоит из n[SUP]3[/SUP] прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это т
Посмотрите здесь:

C++ Если среди трех чисел А, В, С имеется хотя бы одно четное вычислить максимальное
C++ удаляет из списка за каждым хождением элемента e один элемент, если таковой имеется и он отличен от e
C++ Смоделировать бросание каждым из двух игроков трех игральных кубиков
C++ Матрица C(m;m) состоит из нулей и единиц. Найти в ней номера (индексы) хотя бы одной строки и хотя бы одного столбца
C++ Составьте программу, обнуляющую главную диагональ матрицы, если в ней найдется хотя бы один отрицательный элемент
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
06.02.2013, 16:47     Куб состоит из n[SUP]3[/SUP] прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это т #2
Цитата Сообщение от SvI Посмотреть сообщение
Она простая, но я ещё не въехал в тему.
Я бы так не сказал. Мне кажется что здесь определённо не хватает данных.
SvI
-79 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 45
06.02.2013, 16:52  [ТС]     Куб состоит из n[SUP]3[/SUP] прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это т #3
Цитата Сообщение от Пёс Посмотреть сообщение
Я бы так не сказал. Мне кажется что здесь определённо не хватает данных.
Все данные я написал. Большего не дано.
Пёс
 Аватар для Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
06.02.2013, 17:03     Куб состоит из n[SUP]3[/SUP] прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это т #4
Цитата Сообщение от SvI Посмотреть сообщение
Все данные я написал. Большего не дано.
Ну если для вас она простая, то предоставьте решение на уровне алгебры, а я перепишу Вам её на язык C++
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
06.02.2013, 19:32     Куб состоит из n[SUP]3[/SUP] прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это т #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <vector>
#include <ctime>
 
#define N 5             // задаём размер куба
using std::cout; using std::cin; using std::endl; using std::vector;
 
struct point
{
    int x, y;
    point (int X, int Y) 
    {
        x = X;
        y = Y;
    }
};
 
void showCube(const bool cube[N][N][N])
{
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < N; ++j) {
            for (int k = 0; k < N; ++k) {
                cout << cube[i][j][k] << " ";
            }
            cout << endl;
        }
        cout << endl;
        cout << endl;
    }
}
 
void rift(const bool cube[N][N][N], vector<point>& vecX, vector<point>& vecY, vector<point>& vecZ)
{
    bool flatX[N][N], flatY[N][N], flatZ[N][N]; // объявляем три плоскости при рассмотрении куба
    for (int a = 0; a < N; ++a) {               // и инициализируем их прозрачными кубиками (false)
        for (int b = 0; b < N; ++b) {
            flatX[a][b] = false;      // false - прозрачный квадрат
            flatY[a][b] = false;      // true - непрозрачный квадрат
            flatZ[a][b] = false;
        }
    }
 
    for (int i = 0; i < N; ++i) { // рассматриваем куб с 3-х сторон направлений координатных осей
        for (int j = 0; j < N; ++j) {
            for (int k = 0; k < N; ++k) {
                if (cube[i][j][k] == true)
                {
                    flatX[j][k] = true;  // заполняем плоскости при нахождении 
                    flatY[i][k] = true;  // каждого непрозрачного квадрата
                    flatZ[i][j] = true;
                }
            }
        }
    }
 
    for (int a = 0; a < N; ++a) {
        for (int b = 0; b < N; ++b) {  // проходимся по каждой обработанной плоскости ещё раз и ищём в них просветы
            if (flatX[a][b] == false)  // если находим,
                vecX.push_back(point(a, b));  // то добавляем точку с нашими координатами в вектор, соответствующий нашей плоскости
            if (flatY[a][b] == false)
                vecY.push_back(point(a, b));
            if (flatZ[a][b] == false)
                vecZ.push_back(point(a, b));
        }
    }
 
}
 
void showVector(const vector<point>& vec) {
    if (vec.size() == 0) {
        cout << "Нет просветов" << endl;
        return;
    }
    for (vector<point>::size_type i = 0; i != vec.size(); ++i) {
        cout << "(" << vec[i].x << ", " << vec[i].y << "). ";
    }
    cout << endl;
}
 
int main()
{
    setlocale(0, "");
    srand((unsigned)time(NULL));
 
    bool cube[N][N][N];    // X -> i, Y -> j, Z -> k
    vector<point> vecX, vecY, vecZ;
 
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < N; ++j) {
            for (int k = 0; k < N; ++k) {
                cube[i][j][k] = (rand()%2 != 0);
            }
        }
    }
 
    showCube(cube);
    rift(cube, vecX, vecY, vecZ);
    cout << "Для плоскости со стороны оси X" << endl;
    showVector(vecX);
    cout << "Для плоскости со стороны оси Y" << endl;
    showVector(vecY);
    cout << "Для плоскости со стороны оси Z" << endl;
    showVector(vecZ);
 
    system("PAUSE");
    return 0;
}
Yandex
Объявления
06.02.2013, 19:32     Куб состоит из n[SUP]3[/SUP] прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это т
Ответ Создать тему
Опции темы

Текущее время: 03:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru