Все о Pascal
Главная
Вход
Регистрация
Воскресенье, 01.12.2024, 21:59Приветствую Вас, программист Гость | RSS
Меню сайта

Категории раздела
Уроки Pascal [36]
Мемы - "Типичный программист" [1]
Задачи [10]
Заработок в интернете [14]
Олимпиадные задчи [1]

Наш опрос
Оцените мой сайт
Всего ответов: 249

Статистика

Форма входа

Главная » Статьи » Уроки Pascal

Урок 23.

Лекция 23.Двумерные и многомерные массивы.
автор: Садовский Ефим Моисеевич

1. Повторение.
    Одномерные массивы. Ввод и заполнение случайными числами.
2. Двумерный массив. Назначение.
    Одномерный массив можно представить в виде таблицы в одну строку, в каждой ячейке которой – данные одного типа. Причем каждая ячейка пронумерована, чтобы по порядковому номеру узнать значение.
12345678910...N
....................................


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

 123...M
1...............
2...............
3...............
..................
N...............

    Наглядный пример – школьный классный журнал. Строки нумеруются по порядковому номеру ученика (для удобства прилагаются фамилия и имя), а столбцы – по датам. В клеточках выставляются отметки.
    Понятно, что для того, чтобы обратиться к конкретной ячейке двумерного массива, необходимо указывать два аргумента: номер строки и номер столбца (чем-то напоминает игру "Морской бой", только с цифрами).
    Например, A[2,3] – элемент двумерного массива, расположенный на пересечении второй строки и третьего столбца.
    Понятно, что двумерные массивы описываются и вводятся несколько по-другому, чем одномерные.
    Кроме двумерных массивов существуют трехмерные, четырехмерные и т.д.
    Трехмерный можно представить в виде куба, разбитого на маленькие кубики (ячейки) ("кубик-рубика"), для обращения к определенной ячейке потребуется знать 3 координаты.
    Четырехмерный представить вообще очень сложно, но для поиска нужного элемента нужно записать 4 аргумента и т.д. 
    А компьютер все это считает! Правда, увеличение размерности ведет к очень резкому возрастанию объема занимаемой массивом памяти. Поэтому размерность многомерных массивов очень ограничена.
2. Двумерный массив. Описание.
    Двумерные массивы описываются в разделе описания переменных (после слова Var), как и одномерные, только в квадратных скобках указывается не одна размерность, а две:
        A:array[1..20,1..10] of integer;
    Мы описали двумерный массив (слово array) из 20 строк и 10 столбцов (200 элементов), состоящий из переменных целого типа (integer).
    При описании трехмерного массива указываются три размерности:
        A:array[1..5,1..7,1..10] of integer;
        и т.д.
    Напоминаем, что в строке описания массива при указании размера нельзя использовать перемен-ную, поэтому в качестве количества строк и столбцов массива указывается заведомо большее значение.
    Для задач, решаемых на уроках программирования при отсутствии в условии задачи указания на конкретное количество строк и столбцов массива, указывайте 10 и 10.
        d:array[1..10,1..10] of real;
3. Двумерный массив. Ввод с клавиатуры и вывод на экран.
    При работе с одномерным массивом, чтобы перебрать все его элементы мы использовали один цикл For:
        for i:=1 to N do , где N – количество элементов массива.
    При работе с двумерным массивом, чтобы перебрать все его элементы, необходимо использовать два вложенных цикла For (перебираем строки от 1 до N, а в каждой строке – столбцы от 1 до M):
        for i:=1 to N do , где N – количество строк массива.
        for j:=1 to M do , где M – количество столбцов массива.
    Большинство задач, в которых требуется массив, включают в себя блоки ввода массива с клавиатуры и вывода его на экран. 
    Ввод массива A с клавиатуры:

 write('Введите количество строк массива: ')
 readln(n);
 write('Введите количество столбцов массива: ')
 readln(m);
for i:=1 to n do
 for j:=1 to m do
 begin
 write('A[',i,',',',j,']=');
 readln(a[i,j]);
 end;
    Так много запятых и апострофов, потому что хочется, чтобы на экране между номерами строи и столбца тоже стояла запятая (Попробуйте не запутаться!...)
    Компьютер будет спрашивать примерно так:
            A[2,4]=
    Вывод массива A на экран:
    Двумерный массив (если он не очень велик) на экран удобно выводить в виде двумерной таблицы:
for i:=1 to n do
 begin
 for j:=1 to m do
 write(A[i,j]:7:1); - для типа Real write(A[i,j]:6); - для типа Integer
 writeln;
 end;
    Форматированный вывод необходим для того, чтобы элементы массива выстраивались точно в виде ровненьких столбцов.
    Заполнение массива A случайными числами:
    Так как количество элементов в двумерном массиве достаточно велико, часто его заполняют случайными числами, а не вводят с клавиатуры (чаще всего это делают, если тип элементов массива - Integer).
    Например, заполнить двумерный массив случайными числами от 1 до 100:
write('Введите количество строк массива: ')
 readln(n);
write('Введите количество столбцов массива: ')
 readln(m);
 randomize;
 for i:=1 to n do
 for j:=1 to m do
 a[i,j]:=random(100)+1;
4. Примеры решения задач.
    Практически решение стандартных задач с двумерным массивом ничем не отличается от аналогичных задач с одномерным, просто при "переборе" всех элементов массива вместо одного цикла For используются два.
    Пример 1. Вычислите среднее арифметическое двумерного массива, заполненного целыми числами.
    Так как количество элементов массива не указано, значит, оно вводится с клавиатуры. Для расчета среднего арифметического вычисляем сумму всех элементов массива и делим на их количество.
program p1;
 var a:array[1..10,1..10] of integer;
 n,m,i,j:integer;
 s:real;
begin
 {Вводим массив}
write('Введите количество строк массива: ')
 readln(n);
write('Введите количество столбцов массива: ')
 readln(m);
 for i:=1 to n do
 for j:=1 to m do
 begin
 write('A[',i,',',',j,']=');
 readln(a[i,j]);
 end; 
 {Вычисляем сумму элементов массива}
 s:=0;
 for i:=1 to n do
 for j:=1 to m do
 s:=s+a[i,j];
 {Вычисляем и выводим на экран среднее арифметическое}
 s:=s/(n*m);
 writeln('Среднее арифметическое =',s);
end.
3. Задачи.
1. Двумерный массив заполнен случайными числами от 1 до 100. Вычислить сумму его элементов, кратных 5.
2. Двумерный массив заполнен любыми числами. Заменить отрицательные элементы их модулями.
3. Двумерный массив 5х10 заполнен случайными числами от 1 до 5. Возвести в квадрат элементы, стоящие на местах, у которых сумма номера строки и номера столбца - четная.
4. Заполнить двумерный массив 10х10 элементов случайными числами от 1 до 10. Сколько получилось пятерок?

Решение задач.
Категория: Уроки Pascal | Добавил: yurabobr1 (13.11.2012)
Просмотров: 2722 | Комментарии: 2 | Теги: строка, число, двумерный, readln, количество, задача, integer, элемент, массив, столбец | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2024