Другие языки программирования и технологии

Аналог ассоциативного массива в Паскале.

Я уже давно пишу на C++ и совсем забыл Паскаль. В C++ есть такая штука как ассоциативный массив (контейнер STL <map>).
Проще говоря, это динамически расширяющийся массив, в качестве индекса которого выступает практически любой тип данных. Например, в качестве индекса может выступать строка:
arr["Паскаль"]=4;
вопрос-есть ли такая же штука в Паскале, или же всё это нужно вручную организовывать при помощи связного списка? Я уже совсем забыл Паскаль, а повторить надо-видите-ли его в школах проходят. Я вообще не понимаю, почему бы не давать в школе C++ вместо Паскаля?
Так есть ли в Паскале такой ассоциативный массив? Спасибо за помощь.
Слухай. Аналогичная ситуация. Вот учил я Пайтон -- язык прекрасный, а тут ЕГЭ по информатике через год и нужно учить Паскаль.
Поверь, после Питона это УЖАСНО!

Ну такая задача, которую ты привел в комментарии, из части С, и, там, если я не ошибаюсь, можно писать на любом языке (нужно указать версию компилятора и язык) . Т. е. можно спокойно тренироваться решать подобные задачки на С++ и не париться.
Слышал, были решения на пхп, лиспе (жесть) , СИ, том же Питоне и С++.

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

Ну и наконец, мой учитель информатики -- директор школы, который не смог найти нормального учителя информатики. Так что нужно учиться самому - по другому никак) Зайди на сайт решуегэ. рф. Там как раз рассматриваются решения всех возможных задач по информатике (и не только) и конечно есть решения части С как раз на Паскале.
Удачи)
Ширяев Александр
Ширяев Александр
496
Лучший ответ
Владимир Морозов Дело в том что у С++ довольно мудрёный консольный ввод-вывод, да и я уже давно пишу программы на C++ преимущественно с использованием GUI. (на C++ Builder). И в любом случае мне придётся перед ЕГЭ вспомнить много всякой ненужной фигни вроде Паскаля или потоков ввода-вывода в С++.
Ширяев Александр Ну а с другой стороны - во всем свои плюсы. Узнаешь то, чего не знал раньше. Это хорошо. А ЕхЭ -- плохо. Однотипные задачи. Можно нифига не знать предмет, а ЕГЭ сдать на >70 баллов. Печально(
в Pascal такой шняги нет за ненадобностью. Индексом массива может быть любой перечисляемый тип например
array[1..6]
array['a'..'z']
array[false..true] и пр.
в динамических массивах в качестве индексов используются только числа
для написания реальных программ этого более чем достаточно

Pascal изучают в школах из за его высокого качества и удобства изучения, из-за того что там отсутствует всякая ни кому ненужная хрень типа ассоциативных массивов. Кроме возможности лишний раз выстрелить себе в ногу подобная фигня ни чего не дает
Владимир Морозов А мне кажется, что ассоциативные массивы нужны. Вот пример задачи, для решения которой я бы воспользовался ассоциативным массивом:
на вход программе в первой строке подается число N, а затем н строк следующего формата:

После ввода данных программа должна вывести информацию, какой магазин на какую цену продал товара.
Пример работы программы:
4
Продуктовый 100
Канцтоварный 400
Продуктовый 500
Мясной 700

Вывод:
Продуктовый 600
Канцтоварный 400
Мясной 500.

Задачу я выдумал только что, но такого плана встречаются в ЕГЭ по информатике. бы решил эту задачу при помощи ассоциативного массива., в качестве индекса которого выступает строка, а в качестве значения-продажи за сегодня.
вроде arr["Продуктовый"]+=600;

Как это решить на Паскале? Создавать массив array["aaaaaaaaaaa".."яяяяяяяяяяя] ? Не многовато ли памяти расходуется?
Мне кается, что это тот случай, когда ассоциативный массив нужен. Хотя, возможно, есть решение проще.
В Delphi используйте класс TList (или производные от него) .
Для вашего случая подойдет TStringList. Числовые значения (Integer) можно записывать непосредственно в его массив Objects, но при этом необходимо будет приводить типы при чтении и записи значений. Чтобы это делалось автоматически перекройте соответствующие методы собственной реализацией.
Андрей Сияшин
Андрей Сияшин
9 825