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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SvI
-79 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 45
#1

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

23.12.2012, 18:20. Просмотров 473. Ответов 4
Метки нет (Все метки)

Задание: Куб состоит из n3 прозрачных и не прозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это так, вывести координаты каждого просвета.

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

Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. Есть ли хоть один просвет по каждому из трех измерений? Если так, вывести координаты - C (СИ)
Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. Есть ли хоть один просвет по каждому из трех измерений? Если так, вывести...

Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков - C (СИ)
Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. Есть ли хоть один просвет по каждому из трех измерений? Если так, вывести...

Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. - Turbo Pascal
Куб состоит из n3 прозрачных и непрозрачных элементарных кубиков. Имеется ли хотя бы один просвет по каждому из трех измерений? Если это...

Куб из прозрачных и непрозрычных кубиков - Python
На изучение питона дали 10 дней, было всего лишь 3 занятия, ни в чем не смог разобраться. Помогите пожалуйста решить задачу: Куб...

Если среди трех чисел А, В, С имеется хотя бы одно четное вычислить максимальное - C++
Если среди трех чисел А, В, С имеется хотя бы одно четное вычислить максимальное, иначе – минимальное.Как это выглядит С++?

Если среди трех чисел имеется хотя бы одно четное, то найти максимальное - Free Pascal
Если среди трех чисел x,y,z имеется хотя бы одно четное, то найти максимальное число, иначе – минимальное.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
06.02.2013, 16:47 #2
Цитата Сообщение от SvI Посмотреть сообщение
Она простая, но я ещё не въехал в тему.
Я бы так не сказал. Мне кажется что здесь определённо не хватает данных.
0
SvI
-79 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 45
06.02.2013, 16:52  [ТС] #3
Цитата Сообщение от Пёс Посмотреть сообщение
Я бы так не сказал. Мне кажется что здесь определённо не хватает данных.
Все данные я написал. Большего не дано.
0
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
06.02.2013, 17:03 #4
Цитата Сообщение от SvI Посмотреть сообщение
Все данные я написал. Большего не дано.
Ну если для вас она простая, то предоставьте решение на уровне алгебры, а я перепишу Вам её на язык C++
0
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
06.02.2013, 19:32 #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;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2013, 19:32
Привет! Вот еще темы с ответами:

Если среди трех чисел А, В, С имеется хотя бы одно четное, вычислить максимальное, инач - Visual Basic
Помогите пожалуйста решить задачу: Если среди трех чисел А, В, С имеется хотя бы одно четное, вычислить максимальное, иначе – минимальное.

Если среди трех чисел x,y,z имеется хотя бы одно четное, то найти максимальное число - Free Pascal
Если среди трех чисел x,y,z имеется хотя бы одно четное, то найти максимальное число, иначе – минимальное.

Если среди трех чисел А,В,С имеется хотя бы одно четное. Вычислить максимальное, иначе - минимальное - Free Pascal
Задания для самостоятельного выполнения оператор условного перехода 1. Если среди трех чисел А,В,С имеется хотя бы одно четное. Вычислить...

Если среди трех заданных чисел имеется хотя бы одно четное, вывести максимальное из них, иначе минимальное - PascalABC.NET
ребят,такая задачка ввести 3-и числа,если среди них имеется хотябы одно четное вывести максимальное из них,иначе минимальное. я сделал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.02.2013, 19:32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru