Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/32: Рейтинг темы: голосов - 32, средняя оценка - 4.53
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Многомерный массив и массив массивов

20.12.2012, 09:24. Показов 6428. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На паскале это синонимы. Например, всё валидно:
Pascal
1
2
3
4
5
6
7
var a:array[1..n]of array[1..n]of array[1..n] of real; {объявлен одномерный массив одномерных массивов одномерных массивов реалов}
begin
        a[1,2][3]:=2; {А обращаемся к нему как к двумерному массиву одномерных массивов реалов}
        a[1][2,3]:=2; {А здесь как к одномерном массиву двумерных массивов реалов}
        a[3,4]:=a[5,5]; {И здесь как к двумерному массиву одномерных массивов реалов}
        a[1]:=a[8]; {И здесь как к одномерном массиву двумерных массивов реалов}
        a[1,2,3]:=2; {А здесь как к трёхмерному реалов}
,
Pascal
1
2
3
4
5
6
var a:array[1..n]of array[1..n,1..n] of real; {Объявлен одномерный массив двумерных массивов реалов}
begin
        a[1,2][3]:=2; {А обращаемся к нему как к двумерному массиву одномерных массивов реалов}
        a[1]:=a[8]; {И здесь как к одномерном массиву двумерных массивов реалов}
        a[1,2,3]:=2; {А здесь как к трёхмерному реалов}
        a[6][8][4]:=2; {А здесь как к одномерному массиву одномерных массивов одномерных массивов реалов}
Pascal
1
2
3
4
5
6
var a:array[1..n]of array[1..n]of array[1..n] of real; {Объявлен одномерный массив двумерных массивов реалов}
begin
        a[1,2][3]:=2; {А обращаемся к нему как к двумерному массиву одномерных массивов реалов}
        a[1]:=a[8]; {И здесь как к одномерном массиву двумерных массивов реалов}
        a[1,2,3]:=2; {А здесь как к трёхмерному реалов}
        a[6][8][4]:=2; {А здесь как к одномерному массиву одномерных массивов одномерных массивов реалов}
,
Pascal
1
2
3
4
5
var a:array[1..n,1..n]of array[1..n] of real; {объявлен двумерный массив одномерных массивов реалов}
begin
        a[1][2,3]:=2; {А обращаемся к нему как к одномерном массиву двумерных массивов реалов}
        a[1,2,3]:=2; {А здесь как к трёхмерному реалов}
        a[6][8][4]:=2; {А здесь как к одномерному массиву одномерных массивов одномерных массивов реалов}
,
Pascal
1
2
3
4
5
6
7
var a:array[1..n,1..n,1..n]of real; {объявлен трёхмерный массив реалов}
begin
        a[1,2][3]:=2; {А обращаемся к нему как к двумерному массиву одномерных массивов реалов}
        a[1][2,3]:=2; {А здесь как к одномерном массиву двумерных массивов реалов}
        a[3,4]:=a[5,5]; {И здесь как к двумерному массиву одномерных массивов реалов}
        a[1]:=a[8]; {И здесь как к одномерном массиву двумерных массивов реалов}
        a[6][8][4]:=2; {А здесь как к одномерному массиву одномерных массивов одномерных массивов реалов}
. А на c/c++ нет самого понятия многомерного массива. А теперь вопрос: почему? Почему на паскале это синонимы и почему на c/c++ существует только одно из этих двух понятий?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2012, 09:24
Ответы с готовыми решениями:

Многомерный массив. С++
Здравствуйте нужно решить две задачки. а) Найдите сумму всех элементов матрицы размером 6х6, состоящей из элементов вещественного типа...

Многомерный массив
Найти максимальный элемент в массиве. Размеры массива задайте сами. Сделайте три варианта программы. В первом элементы массива...

Многомерный массив
Вот надо решить задачу. Первую я сделал. Помогите пожалуйста со второй и если можно то без замудреного кода ) ...

66
 Аватар для palva
4275 / 2968 / 692
Регистрация: 08.06.2007
Сообщений: 9,917
Записей в блоге: 4
20.12.2012, 17:38
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от taras atavin Посмотреть сообщение
Запрещено, что хорошо видно на скриншоте.
На скриншоте написано, что левая часть операции запятая не влияет на выполнение программы. Типа ее можно было бы и не писать. Но компилятор не против. Синтаксически это верно. В квадратных скобках может стоять любое выражение, а запятая вполне легальная бинарная операция для формирования выражений, так же как плюс и минус.
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
20.12.2012, 17:43
Цитата Сообщение от palva Посмотреть сообщение
А что означает: 2[p(), a] не понимаю.
Просто a[2] и 2[a] - то же самое по сути. Про запятую вы курсе.

Добавлено через 2 минуты
Кстати только что по этому поводу новую тему создали: Почему создатели языка C++ придумали такой странный синтаксис обращения к элементам одномерного массива? .
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
20.12.2012, 17:46  [ТС]
Блин, действительно предупреждение и игнор. Но ведь это совсем уж странно.
0
 Аватар для palva
4275 / 2968 / 692
Регистрация: 08.06.2007
Сообщений: 9,917
Записей в блоге: 4
20.12.2012, 17:50
Ага. понял. *(a+2)

Добавлено через 3 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Но ведь это совсем уж странно.
Вам осталось спросить как работает операция "запятая" в выражениях си.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
20.12.2012, 17:58  [ТС]
В чём мотивация Страуструпа и Ритчи? Зачем делать этот игнор? Логичней использовать оба операнда.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
21.12.2012, 08:17
Цитата Сообщение от taras atavin Посмотреть сообщение
В чём мотивация Страуструпа и Ритчи? Зачем делать этот игнор? Логичней использовать оба операнда.

Не по теме:

Создай свой язык на уровне С и используй там оба операнда без игнора


Цитата Сообщение от ForEveR Посмотреть сообщение
taras atavin, Короткий ответ прост: потому что С++ это не Паскаль. И не надо сравнивать. Изучайте спокойно язык, а не задавайтесь вопросом: "почему это есть в одном языке, а в другом нет?"
Цитата Сообщение от taras atavin Посмотреть сообщение
На паскале запятая тоже разделяет параметры.
А еще на Паскале in есть и степень крышкой обозначается и указатель крышкой тоже (^)

Страуструп и Вирт разные люди и разрабатывали разные проекты. Одним разработчикам было удобно одно, а другим другое.
Чего ты глупый такой? Тебе же сказали уже, что это потому, что языки разные.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
21.12.2012, 08:47  [ТС]
Цитата Сообщение от daslex Посмотреть сообщение
А еще на Паскале in есть и степень крышкой обозначается и указатель крышкой тоже (^)
Паскаль с бейсиком не путай, на паскале вообще нет степеней, кроме квадратного корня, квадрата, экспоненты и самопискных функций. Всё перечисленное тоже функции.

Добавлено через 1 минуту
Цитата Сообщение от daslex Посмотреть сообщение
Чего ты глупый такой? Тебе же сказали уже, что это потому, что языки разные.
Паскаль и модула два тоже разные, а в них много чего совпадает.

Добавлено через 21 минуту
Цитата Сообщение от daslex Посмотреть сообщение
А еще на Паскале in есть и степень крышкой обозначается и указатель крышкой тоже (^)
Паскаль с бейсиком не путай, на паскале вообще нет степеней, кроме квадратного корня, квадрата, экспоненты и самопискных функций. Всё перечисленное тоже функции.

Добавлено через 1 минуту
Цитата Сообщение от daslex Посмотреть сообщение
Чего ты глупый такой? Тебе же сказали уже, что это потому, что языки разные.
Паскаль и модула два тоже разные, а в них много чего совпадает. Да и в c/c++ тоже есть совпадения с паскалем: точка. плюс, минус, и точка с запятой ведут себя одинаково на всех трёх языках. С другой стороны, c и c++ тоже разные языки, поэтому даже в них при всём их сходстве совпадает всё таки не всё. Это не аргумент. Вопрос не в том, почему языки разные, а в том, почему одно из различий именно такое. Это могло бы и совпадать, а операция "запятая" есть не везде, но как то же Вирт без неё обошелся. В заголовке цикла можно было бы предложить прикладникам такой синтаксис:
C++
1
for (i=1; i<=n; ++i)
для одного счётчика и такой:
C++
1
for ({i=1; j=1} i<=n {++i; ++j})
для нескольких, а в других местах она вообще не очень то и нужна. А можно сделать саму операцию, но пойти на принцип, из-за которого сравнение уже сделано двойным равенством, а обращение к члену по указателю на объект через комбинацию минуса и знака "больше" и обозначить эту операцию не запятой, а
C++
1
.,
(точка с запятой, но из двух символов и по горизонтали). Знающего язык векторные индексы напрягать не могут, а не знающий ничего хорошего не напишет всё равно, так что отсутствие именно обязательной синонимичности многомерных массивов массивам массивов - не недостаток. По идее многомерные массивы-объекты есть и на c++, это массивы-объекты с многомерными индексами. А хочет прикладник реализовать синонимичность, или нет, это его дело. Но подобное различие - это повод поинтересоваться мотивацией авторов. Может я свой кривоязык сочиняю и хочу знать, какие грабли он обходил, чтоб свою поделуху не слепить ещё кривее? Мотивация Вирта мне понятна: так как нет многомерных массивов, то остаётся единственная возможность сделать многомерные массивы, а перегрузка была придумана позже. Остаётся мотивация авторов c и c++.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2012, 08:47
Помогаю со студенческими работами здесь

многомерный массив
помогите сделать задачу через указатели Сформировать массив типа char размером в 7х5х8 элементов. Проинициализировать его случайными...

Многомерный массив, Си!!!
Дан массив целых чисел a. Изменить индексацию массива на a

Многомерный массив
Имеется вот такое задание: Создать программу, которая реализует журнал с оценками в виде двумерного массива (студенты - строки, оценки за...

Многомерный массив
Пожалуйста помогите написать программу. Выделить память под многомерный массив, заполнить его произвольным образом, передать...

многомерный массив
помогите пожалуйста написать программу: Дана целочисленная прямоугольная матрица. Определить: 1) количество отрицательных элементов...


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

Или воспользуйтесь поиском по форуму:
67
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru