Двумерные массивы
Двумерные массивы в математике представляются матрицей:
или сокращенно можно записать:
, где
число строк;
число столбцов;
индексы (номера) текущих строки и столбца, на пересечении которых находится элемент .
Описание двумерного массива
Описание матрицы в разделе VAR задается структурным типом вида:
<имя массива>: ARRAY [m1..m2, n1..n2] OF <тип элементов>;
m1..m2 – диапазон значений индекса i, определяющий число строк;
n1..n2 – диапазон значений индекса j, определяющий число столбцов.
По описанию матрицы во внутренней памяти компьютера выделяется область из () последовательных ячеек, в которые при работе программы записываются значения элементов матрицы. Например, по описанию:
Var
A: array [1..3, 1..5] of real;
в памяти компьютера выделяется область, состоящая из последовательных ячеек, для записи элементов матрицы вещественного типа. Из описания видно, что матрица состоит из трех строк и пяти столбцов.
Обращение к отдельным элементам матрицы осуществляется с помощью переменной с двумя индексами, например:
;
;
.
Ввод-вывод двумерного массива
Для поэлементного ввода и вывода матрицы используется двойной цикл FOR. Если задать индекс как параметр внешнего цикла, а индекс как параметр внутреннего цикла, то ввод-вывод матрицы осуществляется по строкам.
Пример 1. Организовать ввод целочисленной матрицы по строкам.
.
Описание матрицы вместе с текущими индексами имеет вид:
Var
M: array [1..2, 1..3] of integer;
i, j: integer;
Ввод в программе реализуется в форме диалога, т.е. сопровождается соответствующим сообщением:
Begin {начало программы}
writeln(‘Введите матрицу М’);
for i := 1 to 2 do
for j := 1 to 3 do read(m[i, j]);
…………
На клавиатуре нагляднее всего набирать элементы матрицы по строкам.
1 2 3 <Enter>
4 5 6 <Enter>
Пример 2. Организовать вывод матрицы M на экран.
Вывод матрицы надо реализовать в удобном для чтения виде, т.е. чтобы на одной строке экрана располагалась одна строка матрицы. С этой целью в тело внешнего цикла, помимо внутреннего, включается еще оператор WRITELN, который переводит курсор к началу следующей строки экрана после вывода текущей строки матрицы.
for i := 1 to 2 do
begin
for j := 1 to 3 do write(m[i, j]:3);
writeln
end;
Вид матрицы на экране будет следующим:
1 2 3
4 5 6
Обработка матриц
Базовыми алгоритмами обработки матриц являются те же алгоритмы, которые используются при обработке одномерных массивов. Однако реализацию этих алгоритмов можно условно рассматривать для двух типов задач.
-
Алгоритмы реализуются при обработке всех элементов матрицы.
-
Алгоритмы реализуются внутри каждой строки или каждого столбца матрицы.
Реализация алгоритмов для задач первого типа
Задача 1. Дана матрица вещественных чисел . Вычислить значение , где P1 и P2 – произведения положительных и отрицательных элементов матрицы соответственно.
Program DМ_1;
Var
A: array [1..4, 1..6] of real;
i, j: integer;
P1, P2, Z: real;
Begin
writeln(‘Введите матрицу А’);
for i := 1 to 4 do
for j := 1 to 6 do read(a[i,j]);
P1 := 1;
P2 := 1;
for i := 1 to 4 do
for j :=1 to 6 do
begin
if a[i,j]>0 then P1 := P1 a[i,j];
if a[i,j]<0 then P2 := P2 a[i,j];
end;
Z := P1/abs(P2);
writeln(‘Z=’, Z:10:2);
End.
Задача 2. В квадратной целочисленной матрице вычислить модуль разности между числом нулевых элементов, стоящих ниже главной диагонали, и числом нулевых элементов, стоящих выше главной диагонали.
Введем обозначения:
L1 – число нулевых элементов ниже главной диагонали;
L2 – число нулевых элементов выше главной диагонали;
L= |L1-L2|.
Program DМ1_2;
Var
B: array [1..5, 1..5] of integer;
i, j, L1, L2, L: integer;
Begin
writeln(‘Введите матрицу B’);
for i := 1 to 5 do
for j := 1 to 5 do read(b[i,j]);
L1 := 0;
L2 := 0;
for i := 1 to 5 do
for j := 1 to 5 do
if b[i,j]=0 then
begin
if i>j then L1 := L1+1;
if i<j then L2 := L2 +1;
end;
L := abs(L1 – L2);
writeln(‘L=’, L);
End.
Реализация алгоритмов для задач второго типа
Задача 1. В матрице вещественных чисел первый элемент каждой строки поменять местами с минимальным элементом этой строки. Вывести матрицу Х после обмена.
Program DМ2_1;
Var
X: array [1..3,1..6] of real;
i, j, jmin: integer;
min: real;
Begin
writeln(‘Введите матрицу X’);
for i:= 1 to 3 do
for j := 1 to 6 do read(x[i,j]);
for i:=1 to 3 do
begin
min:=+1E6;
for j:=1 to 6 do
if x[i,j]<min then
begin
min:=x[i,j];
jmin:=j;
end;
x[i,jmin]:=x[i,1];
x[i,1]:=min;
end;
for i:=1 to 3 do
begin
for j:=1 to 6 do write (x[i,j]:6:1);
writeln;
end;
End.
Задача 2. Дана матрица вещественных чисел . Вычислить среднее арифметическое каждого столбца. Результат оформить в виде одномерного массива .
Program DМ2_2;
Var
C: array [1..8, 1..4] of real;
S: array [1..4] of real;
i, j: integer;
Begin
writeln(‘Введите матрицу C’);
for i := 1 to 8 do
for j := 1 to 4 do read(c[i,j]);
for j := 1 to 4 do
begin
s[ j ] := 0;
for i := 1 to 8 do s[ j ]:= s[ j ] + c[i,j];
s[ j ] := s[ j ]/8;
end;
for j := 1 to 4 do write(s[ j ]:8:2)
writeln;
End.
В данной программе следует обратить внимание на то, что при вычислении каждого элемента s[j] организован двойной цикл, в котором индекс является внешним параметром цикла, а индекс внутренним. Это обеспечивает обработку элементов матрицы по столбцам.
- Информатика – предмет и задачи курса
- Появление и развитие информатики
- Информатизация общества
- Информационная культура
- Информация
- Информация
- Свойства информации
- Адекватность информации
- Измерение информации
- Классификация способов измерения информации
- Синтаксическая мера информации
- Семантическая мера информации
- Прагматическая мера информации
- Системы счисления
- Перевод целых чисел в двоичную систему счисления
- Перевод целых чисел из двоичной в восьмеричную и шестнадцатеричную системы счисления
- Сложение и вычитание чисел в различных системах счисления
- Представление данных в памяти компьютера
- Кодирование текстов
- Кодирование изображений
- Кодирование звука
- Управление компьютером
- Программное управление компьютером
- Архитектура компьютера и принципы фон Неймана
- Основные блоки ibm-совместимого компьютера
- История развития вычислительной техники
- Тенденции развития современных компьютеров
- Программы для компьютеров.
- Операционная система.
- Развитие операционных систем.
- Операционные оболочки
- Операционная система windows.
- Концепция ос windows.
- Многопоточность
- Дескриптор
- Прерывания
- Объектно-ориентированная платформа windows
- Объект – файл.
- Объект папка.
- Иерархическая структура подчиненности папок
- Объекты пользовательского уровня – приложение и документ
- Обмен данными.
- Способы обмена данными.
- Пользовательский интерфейс Windows
- Обработка текстовой информации.
- Некоторые возможности текстового процессора Word
- Запуск и завершение работы с Word
- Пользовательский интерфейс Word
- Справочная система Word
- Структура документа
- Страница
- Принципы обработки текстов
- Принцип форматирования
- Стили форматирования
- Использование шаблонов
- Режим структуры документа.
- Сервисные функции Word
- Поиск и замена текста
- Оформление таблиц
- Обрамление
- Вставка объектов
- Технология внедрения и связывания объектов ole
- Внедрение объекта:
- Связывание объекта.
- Вставка графики
- Добавление объектов при помощи панели инструментов “Рисование”
- Автофигуры
- Вставка объектов WordArt
- Вставка специальных символов
- Вставка математических формул
- Построение формулы.
- Изменение формулы.
- Стиль и размер символов в формуле.
- Компьютерные сети
- Передача данных по сети
- Аппаратные средства передачи данных
- Архитектура компьютерных сетей. Понятие “открытая система”
- Модель osi
- Глобальная компьютерная сеть Интернет
- История появления сети Интернет
- Адресация компьютеров в Интернет
- Доменная система имен
- Служба World Wide Web (www)
- Электронная почта
- Табличный процессор Microsoft Excel
- История развития табличных процессоров
- Возможности табличного процессора Excel
- Структура документа Excel
- Типы данных в Excel
- Запуск программы Excel
- Интерфейс пользователя
- Ввод и редактирование данных
- Выделение ячеек
- Копирование и перемещение ячеек
- Форматирование ячеек
- Вычисления в таблице Excel
- Построение диаграмм
- Обобщенная технология работы в табличном процессоре
- Примеры использования функции “если” в Excel
- Основные понятия информационных систем
- Понятие «информационная система»
- Банки данных
- Базы данных
- История развития баз данных
- Структурные элементы базы данных
- Виды моделей данных
- Реляционный подход к построению инфологической модели
- Понятие «информационный объект»
- Нормализация отношений
- Понятие «нормализация отношений»
- Первая нормальная форма
- Вторая нормальная форма
- Третья нормальная форма
- Построение инфологической модели
- Архитектура субд
- Проектирование баз данных
- Система управления базами данных
- Субд Microsoft Access
- Особенности пользовательского интерфейса ms access
- Основные объекты ms access
- Обслуживание магнитных дисков
- Накопители на гибких магнитных дисках
- Структура магнитного диска (на примере дискеты)
- Форматирование дискет
- Правила обращения с дискетой
- Программы для обслуживания магнитных дисков
- Проверка диска
- Дефрагментация файловой системы
- Компьютерные вирусы
- Методы борьбы с компьютерными вирусами
- История развития антивирусных программ
- Современные программы для защиты от вирусов
- Основные этапы решения задач на компьютере
- Языки программирования
- Язык программирования Паскаль
- Алфавит и лексическая структура языка паскаль
- Структура паскаль - программы.
- Типы данных в языке программирования паскаль
- Перечень типовых данных в Турбо Паскале.
- Целочисленные типы данных
- Вещественные типы данных
- Операторы языка программирования паскаль
- Простые операторы
- Оператор присваивания
- Оператор безусловного перехода
- Оператор вызова процедуры
- Структурные операторы
- Составной оператор.
- Условные операторы
- Примеры программ
- Операторы цикла в языке программирования Паскаль
- Оператор цикла с параметром
- Оператор цикла с предусловием
- Оператор цикла с постусловием
- Примеры программ
- Массивы в языке программирования паскаль
- Понятие массива
- Одномерные массивы
- Двумерные массивы
- Процедуры в языке программирования паскаль
- Описание процедуры и обращение к ней
- Параметры - значения и параметры - переменные
- Процедуры функции в языке программирования паскаль
- Описание функции и обращение к ней
- Строки в языке программирования паскаль
- Литерный тип (char) в языке программирования Паскаль
- Строковый тип (string) в языке программирования Паскаль
- Строковые процедуры и функции в Турбо-Паскале
- Примеры программ
- Рекомендуемая литература