Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
44
Добавлен:
02.05.2014
Размер:
96.77 Кб
Скачать

Министерство Образования Российской Федерации

Московский Государственный Индустриальный Университет

Филиал в г. Вязьме

Отчет по лабораторной работе № 5

Дисциплина: «Информатика и программирование»

Тема: «Массивы»

Вариант: 5

Группа: 03Ид1

Студент: Афанасьев Виктор Валерьевич

Преподаватель: Соколова Н.В.

2003 г.

Лабораторная работа № 5

Тема: Разработать алгоритм решения задачи согласно полученному варианту, представить этот алгоритм в виде программы на языке Turbo Pascal 7.0.

Цель: ввод написанной на языке Turbo Pascal 7.0 программы в ПЭВМ, отладка программы и вывод полученного результата.

Задание: ввести с клавиатуры матрицу 5х5, составленную из чисел 1,2,…25. Определить является ли заданная целочисленная матрица «магическим квадратом», т.е. такой, в которой сумма элементов в каждой строке, в каждом столбце, и в каждой диагонали одинаковы (равны между собой). Вывести сообщение о результатах своего исследования. Если матрица является «магическим квадратом», то умножить её на матрицу, составленную из числа, которому равны сумма элементов строк, столбцов, диагоналей, иначе умножить её на матрицу, составленную из сумм индексов элементов исходной матрицы.

Краткие теоретические сведения: Массивы

Массивы - это совокупности однотипных элементов. Характеризуются они следующим:

  • каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ;

  • число компонент массива определяется при его описании и в дальнейшем не меняется.

Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон).

Описание типа массива задается следующим образом:

type

имя типа = array[ список индексов ] of тип

Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных.

Вводить и выводить массивы можно только поэлементно.

Пример 1. Ввод и вывод одномерного массива.

const

n = 5;

type

mas = array[1..n] of integer;

var

a: mas;

i: byte;

begin

writeln('введите элементы массива');

for i:=1 to n do readln(a[i]);

writeln('вывод элементов массива:');

for i:=1 to n do write(a[i]:5);

end.

Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:

var a,b,c: array[1..10] of integer;

Если массивы a и b описаны как:

var

a = array[1..5] of integer;

b = array[1..5] of integer;

то переменные a и b считаются разных типов. Для обеспечения совместимости применяйте описание переменных через предварительное описание типа.

Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива.

Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно.

Так как тип, идущий за ключевым словом of в описании массива, - любой тип Турбо Паскаль, то он может быть и другим массивом. Например:

type

mas = array[1..5] of array[1..10] of integer;

Такую запись можно заменить более компактной:

type

mas = array[1..5, 1..10] of integer;

Таким образом возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт.

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

for i:=1 to m do

for j:=1 to n do a[i,j]:=random(10);

Для "красивого" вывода матрицы на экран используйте такой цикл:

for i:=1 to m do begin

for j:=1 to n do write(a[i,j]:5);

writeln;

end;

Сортировка массива — один из наиболее распространенных процессов обработки данных.

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

Сортировка — это размещение объектов в определенном порядке. Числа могут, размещаться по убыванию или по возрастанию, фамилии — в алфавитном порядке.

Известно несколько алгоритмов сортировки: с помощью включения, выбора и обмена. Подробнее рассмотрим метод сортировки обменом.

Характерной чертой алгоритмов сортировки с помощью обмена является обмен местами двух элементов массива после их сравнения друг с другом. В так называемой «пузырьковой сортировке» проводят несколько проходов по массиву, в каждом из которых повторяется одна и та же процедура: сравнение двух последовательно стоящих элементов и их обмен местами в порядке меньшинства (старшинства). Подобная процедура сдвигает наименьшие элементы к левому концу массива. Название этого алгоритма связано с интерпретацией элементов как пузырей в сосуде с водой, обладающих весом соответствующего элемента (при этом массив надо представлять в вертикальном положении). При каждом проходе пузырьки всплывают до своего уровня.

Пузырьковая сортировка является не самой эффективной, особенно для последовательностей, у которых «всплывающие» элементы находятся в крайней правой стороне. В улучшенной (быстрой) пузырьковой сортировке предлагается производить перестановки на большие расстояния, причем двигаться с двух сторон. Идея алгоритма заключается в сравнении элементов, из которых один берется слева (i = 1), другой справа (j =n). Если a[i]<=a[j], то устанавливают j=j-1 и проводят следующее сравнение. Далее уменьшают j до тех пор, пока а[i] > а[j]. В противном случае меняем их местами и устанавливаем i= i + 1. Увеличение i продолжаем до тех пор, пока не получим а[i] > а[j]. После следующего обмена опять уменьшаем j. Чередуя уменьшение j и увеличение I, продолжаем этот процесс с обоих концов до тех пор, пока не станет i=j. После этого этапа возникает ситуация, когда первый элемент занимает предназначенное место, слева от него младшие элементы, а справа - старшие.

Соседние файлы в папке Лабораторная работа1