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

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

20.12.2012, 09:24. Показов 7526. Ответов 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
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,932
Записей в блоге: 5
20.12.2012, 17:38
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от taras atavin Посмотреть сообщение
Запрещено, что хорошо видно на скриншоте.
На скриншоте написано, что левая часть операции запятая не влияет на выполнение программы. Типа ее можно было бы и не писать. Но компилятор не против. Синтаксически это верно. В квадратных скобках может стоять любое выражение, а запятая вполне легальная бинарная операция для формирования выражений, так же как плюс и минус.
0
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
20.12.2012, 17:43
Цитата Сообщение от palva Посмотреть сообщение
А что означает: 2[p(), a] не понимаю.
Просто a[2] и 2[a] - то же самое по сути. Про запятую вы курсе.

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

Добавлено через 3 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Но ведь это совсем уж странно.
Вам осталось спросить как работает операция "запятая" в выражениях си.
0
 Аватар для taras atavin
4226 / 1799 / 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 / 1799 / 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
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru