Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
62 / 62 / 39
Регистрация: 18.11.2016
Сообщений: 562
1

Не понимаю структуру многомерных массивов

13.01.2017, 19:58. Показов 1730. Ответов 9

Итак, по психологии я чистый визуал и мне, чтобы что-то сделать, нужно четко представлять это в уме.
Проблема заключается в следующем, как визуально выглядят многомерные массивы?
Например:
C++
1
int arr[a][b]
У меня не возникает никаких проблем, т.к. тут я четко понимаю, что первый элемент массива (а) является строкой, а второй элемент массива (b) является столбцом.
Но вот точно представить структуру многомерного массива для меня большая проблема.
Может кто просветит?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2017, 19:58
Ответы с готовыми решениями:

Обработка многомерных массивов
Создать многомерный массив 3x3 элементов.Сделать Разность по горизонтали. Три полученых результата...

Обработка многомерных массивов
Создать многомерный массив 4x4.Вывести на экран минимальное значение многомерного массива.

Индексация многомерных массивов
Почему в C/C++ массивы объявляются так: int array; Это связано как-то с процессом компиляции...

Программирование обработки многомерных массивов
Дана целочисленная прямоугольная матрица. Определить: количество строк, содержащих хотя бы один...

9
Dimension
583 / 451 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
13.01.2017, 20:37 2
Лучший ответ Сообщение было отмечено Photofenix как решение

Решение

я представляю так ,ячейка массива a[x][y] ,это точка в пространстве с координатами x,y (двумерное пространство типа ) ,
ячейка трехмерного массива a[x][y][z] - точка в трехмерном пространстве ,вот картинка ,только вместо маленьких кубов я представляю ,что там числа ,символы,строки ,зависит от того типа данных (int,char,string и тд.) . Измерения побольше я не могу представить ,да и не пробовал даже.
2
Миниатюры
Не понимаю структуру многомерных массивов  
4455 / 2074 / 263
Регистрация: 01.03.2013
Сообщений: 5,516
Записей в блоге: 22
13.01.2017, 20:40 3
Наглядный ответ Чемберлену Визуалу от участника с таким говорящим ником
1
nd2
3409 / 2790 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
13.01.2017, 20:57 4
Лучший ответ Сообщение было отмечено Photofenix как решение

Решение

Цитата Сообщение от Photofenix Посмотреть сообщение
C++
1
int arr[a][b];
a одномерных массивов, каждый из которых состоит изb элементов.
C++
1
int arr[3][4] = {{1, 2, 3, 4}, {1, 2,, 3, 4,}, {1, 2, 3, 4}};
C++
1
int arr[c][a][b];
c двумерных массивов, каждый из которых состоит из a одномерных, каждый из которых состоит изb элементов.
C++
1
int arr[2][3][4] = {{{1, 2, 3, 4}, {1, 2,, 3, 4,}, {1, 2, 3, 4}}, {{1, 2, 3, 4}, {1, 2,, 3, 4,}, {1, 2, 3, 4}}};
1
_Ivana
13.01.2017, 21:12
  #5

Не по теме:

Тссс! А то если ТС узнает про линейную модель адресации памяти, для него, как визуала, это может оказаться сильным потрясением...

0
62 / 62 / 39
Регистрация: 18.11.2016
Сообщений: 562
13.01.2017, 21:20  [ТС] 6
C++
1
arr [a][b][c]
, получается, что первый элемент массива (а) - это слой, второй элемент массива (b) - строка и третий элемент массива (с) - столбец?)
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
13.01.2017, 21:26 7
Цитата Сообщение от Dimension Посмотреть сообщение
Измерения побольше я не могу представить ,да и не пробовал даже
зря, интересное занятие)
0
62 / 62 / 39
Регистрация: 18.11.2016
Сообщений: 562
13.01.2017, 21:53  [ТС] 8
Я уже представил это как коробку со слоями, строками и столбцами.
Если брать больше массивов, то можно представить как коробку с коробками со слоями, строками, столбцами)

Добавлено через 3 минуты
Вот такой код.


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
#include <iostream>
#include <clocale>
#include <Windows.h>
 
using namespace std;
    
    int main()
    {
        int const set = 1251;
        SetConsoleCP       (set);
        SetConsoleOutputCP (set);
        setlocale(LC_ALL,"Russian");
 
start:
        int a,b,c,d;
        int const y = 6;
        int count = 0;
        int N;
 
        int arr [y][y][y][y];
 
        for(int i=0; i<y; i++)
        {
            for(int j=0; j<y; j++)
            {
                for(int r=0; r<y; r++)
                {
                    for(int t=0; t<y; t++)
                    {
                        arr [i][j][r][t] = count;
                        count ++;
                        //
                        cout << "i = " << i << " j = " << j << " r = " << r << " t = " << t << " arr = " << arr[i][j][r][t] << endl;
                    }
                }
            }
        }
 
        for(int i=0; i<y; i++)
        {
            for(int j=0; j<y; j++)
            {
                for(int r=0; r<y; r++)
                {
                    for(int t=0; t<y; t++)
                    {
                        cout << "i = " << i << " j = " << j << " r = " << r << " t = " << t << " arr = " << arr[i][j][r][t] << endl;
                    }
                }
            }
        }
        cout << endl;
        
        cin >> a >> b >> c >> d;
        cout << arr[a][b][c][d] << endl;
        
        cin >> N;
 
        switch(N)
        {
        case 1: system ("CLS"); goto start; break;
        case 2: return 0; break;
    
 
        }
        
    }
0
nd2
3409 / 2790 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
13.01.2017, 21:55 9
Цитата Сообщение от Photofenix Посмотреть сообщение
получается, что первый элемент массива (а) - это слой, второй элемент массива (b) - строка и третий элемент массива (с) - столбец?)
Строки, столбцы, слои - это уже некий уровень абстракции.
C++
1
2
3
arr [a][b][c];
arr[0]; // адрес первого из двумерных массивов
arr[0][0]; // адрес первого из одномерных массивов, в первом двумерном
0
Эксперт CЭксперт С++
5054 / 2241 / 330
Регистрация: 20.02.2013
Сообщений: 5,601
Записей в блоге: 24
13.01.2017, 21:56 10
Цитата Сообщение от Photofenix Посмотреть сообщение
коробку с коробками со слоями, строками, столбцами
Самки пакетов откладывают яйца в пакеты для пакетов с пакетами
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2017, 21:56

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Редактор многомерных динамических массивов
!!! Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. ...

Передача многомерных массивов в функцию
Привет. Почему при передаче многомерного массива в функцию необходимо обязательно указывать...

Заполнение многомерных массивов вручную
Я могу заполнить одномерный массив с клавиатуры таким образом: int g{...

Быстрая инициализация многомерных массивов
Доброго времени суток. Работаю на QT Creator в связке с MinGW 32 Проблемы в общем то и нет,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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