|
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
|
||||||||||||||||||||||||||||||||||||||||||||||
Описание, объявление и заполнение массивов (матриц)21.05.2010, 13:13. Показов 273798. Ответов 17
Метки нет (Все метки)
Приветствую всех посетителей данной темы. Очень часто наблюдаю, что многие новички создавая очередную тему по массивам даже понятия не имеют каким образом его можно описать, заполнить и какие виды работы с его элементами существуют.
Итак, начнём с видов описания одномерного массива (при описании массивов будет использоваться базовый тип integer (-32768..+32767)): 1) описание в разделе констант:
1) заполнение одномерного массива посредством генератора случайных чисел, состоящего из 10-ти элементов и описанного в разделе описаний переменных:
допустим что очередной элемент массива будет равен разности квадратов двух предыдущих элементов, т.е. a[i]=sqr(a[i-1])-sqr(a[i-2]):
Надеюсь моя тема, оказалась полезной и информативной для непросвещённых. Добавлено через 11 часов 25 минут 5) импорт данных (двоичный типизированный/нетипизированный, текстовый): для начала рассмотрим двоичный типизированный файл: т.к. мы считываем инф. из файла, то необходимо его заполнить с помощью следующей программы:
47
|
||||||||||||||||||||||||||||||||||||||||||||||
| 21.05.2010, 13:13 | |
|
Ответы с готовыми решениями:
17
Написать объявление и описание класса, который вычисляет выражение
|
|
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
|
|||||||||||
| 26.05.2010, 13:29 [ТС] | |||||||||||
|
работа с нетипизированным двоичным файлом:
аналогично двум предыдущим примерам заполним файл произвольными значениями, а затем извлечём их в ячейки массива: заполнение:
13
|
|||||||||||
|
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
|
||||||||||||||||||||||||||
| 28.05.2010, 02:11 [ТС] | ||||||||||||||||||||||||||
|
Итак, перейдём к многомерным массивам:
Начнём с того, что такое многомерный массив - это упорядоченная совокупность однотипных данных, характеризуемая более чем одним параметром (индексирование массива по нескольким параметрам). Пример: предположим точка на координатной плоскости отличается от остальных точек, своими координатами по оси x и y (углубляться в более подробное описание координатных плоскостей мы не будем, ибо это является одной из задач математики) и значением (предположим в роли значения в данном случае будет выступать расстояние от начала координат до заданной точки; оно определяется по ф-ле: L=sqrt(sqr(x2-x1)+sqr(y2-y1))):
в программировании данный пример не очень корректен, т.к. координата точки - это тоже, в свою очередь определённое значение и оно может быть любым (т.е. и вещественным в том числе, а индекс массива - это обязательно целое число); Но мы всё же немного опередили события, и мне хотелось бы начать с описания многомерных массивов: 1) раздел описаний (var - сокращ. от англ. variables - изменчивый, меняющийся, переменный):
2) описание одномерного массива в разделе var, имеющего тип одномерный массив:
3) описание двумерного массива в разделе const (константы):
При выводе такого массива на экран мы получим (с использованием двух циклов и операторов write/writeln): 3 -2 1 4 3 -5 -9 0 3 7 -1 2 1 -4 0 вот исходный код :
( основные методы заполнения многомерного массива аналогичны одномерному, поэтому в данной теме рассмотрены не будут) Добавлено через 13 минут Единственное отличие состоит в том, что заполнение элементов проводится, с учётом полной индексации, т.е. с учётом размерности массива: если массив двухмерный, то mas[i,j]:=...; если трёхмерный, то mas[i,j,k]:=... и т.д. (ну и само собой используется соответствующее кол-во циклов по всем параметрам размерности)
12
|
||||||||||||||||||||||||||
|
654 / 352 / 113
Регистрация: 11.12.2009
Сообщений: 508
|
|||||||||||||||||||||||||||||||||||||||||
| 31.05.2010, 09:38 | |||||||||||||||||||||||||||||||||||||||||
|
Раз уж перешли к двумерным массивам, то выкладываю примеры различных вариантов заполнений.
1) Заполнение "змейкой" Например:
Например:
3) Заполнение спиралью из центра Пусть у нас есть число n. Создадим матрицу порядка 2*n+1 и заполним его по примеру (n=2):
Реализация:
Пусть нам надо заполнить матрицу как таблицу умножения, т.е. каждый элемент равен произведению его индексов (a[i,j]=i*j) Например:
16
|
|||||||||||||||||||||||||||||||||||||||||
|
654 / 352 / 113
Регистрация: 11.12.2009
Сообщений: 508
|
||||||
| 02.06.2010, 13:10 | ||||||
|
5) Построение магического квадрата нечетного порядка
Магический квадрат-таблица, заполненная числами от 1 до Почему только нечетного порядка? Во-первых, потому что способы построений различны в зависимости от n. А во-вторых, потому что это самый простой вариант, и его чаще всего просят сделать
9
|
||||||
| 02.06.2010, 13:35 | |
|
Не по теме: Unrealler, Не ищи легких путей, напиши для четных, нечетный на форуме уже был.
1
|
|
|
654 / 352 / 113
Регистрация: 11.12.2009
Сообщений: 508
|
||||||
| 02.06.2010, 14:10 | ||||||
|
6) Построение магического квадрата при (n mod 4=0)
9
|
||||||
|
654 / 352 / 113
Регистрация: 11.12.2009
Сообщений: 508
|
||||||
| 04.06.2010, 09:24 | ||||||
|
7) Заполнение матрицы по периметру по часовой стрелке
7
|
||||||
|
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 3
|
|
| 07.06.2010, 12:05 | |
|
А если необходимо заполнить массив по определенной траектории? Скажем, мне нужно в порядке убывания разместить элементы в направлении, указанном на рисунке:
код что-то не выходит: до центра дохожу и стопорится, да к тому же зацикливается. Подскажите, как такой вариант решается? PS пардон, возможна эта тема закрыта, но если именно здесь будет опубликован ответ, то, возможно, в дальнейшем не возникнет подобных вопросов (к тому же вопрос вполне по теме).
1
|
|
|
654 / 352 / 113
Регистрация: 11.12.2009
Сообщений: 508
|
|||||||||||
| 08.06.2010, 14:26 | |||||||||||
|
8) Заполнение "треугольниками"
Пример:
Не по теме: InferI, тут нужно подумать. Возможно чуть позже, если сделаю, выложу
10
|
|||||||||||
|
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 3
|
|
| 05.04.2011, 23:45 | |
|
А если по часовой стрелки с нижнего угла?
0
|
|
|
Почетный модератор
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,168
|
||||||
| 06.04.2011, 09:29 | ||||||
3
|
||||||
|
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 11
|
|
| 03.05.2011, 23:56 | |
|
вот у меня вопрос по теории :
В каких случаях целесообразно описывать двумерный массив с помощью одномерных?
0
|
|
|
Почетный модератор
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,168
|
||||||
| 04.05.2011, 06:16 | ||||||
|
В случаях когда нужно производить действия в строках или столбцах, или при их перестановках в матрице.
Например обмен строк 1 - n,2 - n-1,3 - n-2....
1
|
||||||
|
Мега Таракан
110 / 11 / 5
Регистрация: 24.05.2010
Сообщений: 227
|
|||||||||||
| 25.05.2011, 00:06 | |||||||||||
|
Извиняюсь за туповатый вопрос, но как заменить в массиве четверти? т.е. был массив такой
З.Ы. Думаю этот вопрос не только мне будет интересен
0
|
|||||||||||
|
773 / 578 / 324
Регистрация: 17.06.2009
Сообщений: 1,188
|
|||||||
| 25.05.2011, 02:12 [ТС] | |||||||
2
|
|||||||
|
Модератор
|
||||||
| 19.10.2016, 18:48 | ||||||
|
Замечание к ответу №2 про нетипизированный файл.
Если собрались писать в файл только целые, открывать проще сразу с нужным размером элемента, тогда при записи/чтении можно будет указывать просто количество элементов:
0
|
||||||
|
Модератор
|
|||||||||||
| 18.03.2019, 20:21 | |||||||||||
|
Пример чтения массива для случая, когда известно максимально возможное количество элементов, заданных в одной строке:
в первом случае если после последнего в строке числа ввести пробел или иной пробельный символ, то считывание продолжится и на новой строке; во втором случае считывание будет всегда завершено с окончанием текущей строки вне зависимости от наличия в конце пробельных символов.
0
|
|||||||||||
| 18.03.2019, 20:21 | |
|
Помогаю со студенческими работами здесь
18
Объявление массивов
Объявление массивов в С/С++ Объявление динамических массивов Объявление переменных-массивов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
|
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца:
Хочу еще Симбу взять, очень нравится. . .
|
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
|
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
|
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
|
|
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
|
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
|
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7
Чтобы решить задачу, использовал интернет:
поисковики Google и Yandex, а также подсказки Deep Seek.
Как оказалось, чтобы создать. . .
|
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
|
Последние результаты исследования от команды MCM (октябрь 2025 г.)
Programma_Boinc 29.10.2025
Последние результаты исследования от команды MCM (октябрь 2025 г. )
Поскольку мы продолжаем изучать гены, которые играют ведущую роль в развитии рака, в рамках проекта "Картирование раковых. . .
|