Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции программирование.doc
Скачиваний:
25
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Двумерные и многомерные массивы

Иногда данные имеют табличный вид. Можно, конечно, расположить их подряд (строка за строкой) в обычном (он называется одномерным или линейным) массиве, но будет неудобно обращаться к таким элементам: их номер придётся высчитывать с помощью формулы N=(НомерСтроки-1)*ДлинуСтроки+Номер Столбца. Это (кроме неудобства) ещё и замедлит работу с массивом. Вместо этого можно использовать двумерный массив (массив из одномерных массивов). Фактически в памяти элементы массива тоже расположены подряд, но поиск элемента массива берёт на себя сам Паскаль, а мы ему указываем два индекса: номер строки и номер столбца. Например: a[5,4]. При описании такого массива указывают два диапазона – для каждого индекса:

a:array[1..20,1..10] of integer;. (Примечание: Для Паскаля несущественно, что мы указываем первым - строку или столбец. Просто в первом случае в памяти элементы массива укладываются подряд, построчно, строка за строкой, а во втором «постолбцово», столбец за столбцом)

В

program Tab_Umn;

uses crt;

var

x,y:integer;

p:array[1..9,1..9] of byte;

begin

clrscr;

for x:=1 to 9 do

for y:=1 to 9 do

begin

p[x,y]:=x*y;

gotoxy(x*4; y*2);

write(p[x,y]);

end;

end.

качестве примера приведём программу, которая заполняет двумерный массив таблицей умножения и распечатывает его:

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

Точно так же существуют четырёхмерные (стопка журналов), пятимерные (несколько стопок на полке), шестимерные (несколько полок в шкафу) и т.д. массивы. Паскаль позволяет использовать до 255 индексов, хотя это никому не нужно: 10-мерного массива достаточно, чтобы охватить оценки всех учеников во Вселенной. В реальности чаще всего обходятся 1–3-мерными массивами.

Лаб. 12. Задачи с одномерными массивами

  1. Заполнить массив 20-ю случайными числами в пределах от 1 до 100, так чтобы ни один элемент не делился на предыдущий и чтобы подряд не шли одинаковые числа. Найти сумму всех элементов.

  2. Ввести с клавиатуры 10 чисел, не допуская ввода чисел, кратных трём. Определить, что больше: сумма чисел с чётными номерами или с нечётными.

  3. Заполнить массив 20-ю случайными числами в пределах от 10 до 50, так чтобы все числа были разными. Найти самое большое число.

  4. Занести в массив 20 чисел, начиная от 4, в порядке возрастания, так чтобы среди них не было простых чисел.

  5. Ввести с клавиатуры 10 чисел, не допуская ввода числа, равного предыдущему. Найти минимальное и максимальное. Если они повторяются, определить, какое из них повторяется больше раз.

  6. Заполнить массив 20-ю случайными числами в пределах от 1 до 30, так чтобы все числа были разными. Найти все числа из заданного промежутка, которые не вошли в этот массив.

  7. Массив заполнен 20-ю случайными числами в пределах от 1 до 10. Оставить в нём только неповторяющиеся числа в том порядке, в каком они встречаются в первый раз. Остальные места заполнить нулями.

  8. Заполнить массив 20-ю случайными числами в пределах от 1 до 50, так чтобы ни один элемент не был кратным трём. Любое число должно отличаться от полусуммы его соседей слева и справа.

  9. Ввести с клавиатуры 10 чисел, не допуская ввода числа, равного среднего арифметического ранее введённых (или его целой части).

  10. В массиве, заполненном 20-ю случайными нечётными двузначными числами, найти все числа, сумма цифр которых больше 10 и вычислить их сумму.

  11. Заполнить массив 20-ю случайными чётными числами в пределах от 10 до 99, у которых вторая цифра больше первой. Найти среднее арифметическое всех элементов массива.

  12. Дан массив из случайных чисел. Нужно переписать элементы, большие среднего арифметического, в начало, а остальные - в конец массива. Выполнить с использованием второго вспомогательного массива.

  13. В одном массиве – рост 20-ти человек, в другом – их вес. Найти номер самого стройного (отношение роста к весу – максимальное).

  14. Каждый элемент массива на единицу больше, чем квадратный корень из предыдущего. Первый = 1. Найти сумму всех элементов такого массива из 10 чисел.

  15. В массиве, заполненном 20-ю случайными чётными числами в пределах от 1 до 30, найти все числа, вторая цифра которых больше первой и вычислить сумму всех чётных из них.

  16. Ввести с клавиатуры 12 чисел, допуская только ввод чисел, не больших 20. Найти сумму тех из них, которые встречаются в массиве только один раз.

  17. Массив заполнен 20-ю случайными числами в пределах от 0 до 50. Сколько в нём содержится различных чисел?

  18. В массиве, заполненном 20-ю случайными числами в пределах от 1 до 100, найти количество пар рядом стоящих чисел, кратных друг другу.

  19. Заполнить с клавиатуры массив из 10 чисел и найти общий делитель для всех чисел (или сообщить о его отсутствии).

  20. Массив содержит 20 случайных чисел в пределах от 1 до 10. Найти в нём самую длинную последовательность одинаковых чисел.