Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Поиска максимального элемента в массиве и его номера



Дан массив X, состоящий из n элементов. Найти максимальный элемент массива и номер, под которым он хранится в массиве.

Алгоритм решения задачи следующий. Пусть в переменной с именем Max хранится значение максимального элемента массива, а в переменной с именем Nmax - его номер. Предположим, что первый элемент массива является максимальным, и запишем его в переменную Max, а в Nmax занесем его номер, то есть - 1. Затем все элементы, начиная со второго, сравниваем в цикле с максимальным. Если текущий элемент массива оказывается больше максимального, то записываем его в переменную Max, а в переменную Nmax - текущее значение индекса i. Процесс определения максимального элемента в массиве приведен в таблице 3.1 и изображен при помощи блок-схемы на рис. 3.7.

Таблица 3.1. Определение максимального элемента и его номера в массиве
Номера элементов
Исходный массив
Значение переменной Max
Значение переменной Nmax

 

Рис. 3.7. Поиск максимального элемента и его номера в массиве

Совет. Алгоритм поиска минимального элемента в массиве будет отличаться от приведенного выше лишь тем, что в условном блоке знак поменяется с > на <.

Билет№18

Сортировка элементов в массиве

Сортировка представляет собой процесс упорядочения элементов в массиве в порядке возрастания или убывания их значений. Например, массив X из n элементов будет отсортирован в порядке возрастания значений его элементов, если X1 ≤ X2 ≤...≤ Xn, и в порядке убывания, если X1 ≥ X2 ≥ ... ≥ Xn.

Существует большое количество алгоритмов сортировки, но все они базируются на трех основных:

  • сортировка обменом;
  • сортировка выбором;
  • сортировка вставкой.

Представим, что нам необходимо разложить по порядку карты в колоде. Для сортировки карт обменом можно разложить карты на столе лицевой стороной вверх и менять местами те карты, которые расположены в неправильном порядке, делая это до тех пор, пока колода карт не станет упорядоченной.

Для сортировки выбором из разложенных на столе карт выбирают самую младшую (старшую) карту и держат ее в руках. Затем из оставшихся карт вновь выбрать наименьшую (наибольшую) по значению карту и помещают ее позади той карты, которая была выбрана первой. Этот процесс повторяется до тех пор, пока вся колода не окажется в руках. Поскольку каждый раз выбирается наименьшая (наибольшая) по значению карта из оставшихся на столе карт, по завершению такого процесса карты будут отсортированы по возрастанию (убыванию).

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

Итак, решим следующую задачу. Задан массив Y из n целых чисел. Расположить элементы массива в порядке возрастания их значений.

Билет№19

Program Pr22 (Input, Output); Объявление имени программы
Var Блок объявления глобальных переменных
X: Array [1..20, 1..20] Of Real; Переменная X - двумерный массив действительных чисел, размер - не более 20x20
N: Integer; Переменная N - число элементов массива X
S: Real; Переменная S - искомая сумма элементов массива
i, j: Integer; Переменные i, j - параметры циклов
   
Begin Начало тела программы
   
WriteLn ('PASCAL: Вычисление суммы элементов прямоугольной таблицы.'); Формулировка цели алгоритма
Write ('Введите размерность таблицы: N = '); Запрос ввода N - числа элементов массива
ReadLn (N); Ввод N
WriteLn ('Введите элементы таблицы: '); Запрос ввода элементов таблицы
For i: = 1 To N Do Цикл для i от 1 до N, где i - номер очередной строки
For j: = 1 To N Do Цикл для j от 1 до N, где j - номер очередного столбца
Begin Начало тела цикла
Write ('X[', i, ', ', j, '] = '); Вывод удобной подсказки
ReadLn (X [i, j] ); Ввод очередного элемента - X[i, j]
End; Конец тела цикла
   
S: = 0; Переменной S присваиваем начальное значение 0
For i: = 1 To N Do Цикл для i от 1 до N, где i - номер очередной строки
For j: = 1 To N Do Цикл для j от 1 до N, где j - номер очередного столбца
S: = S + X [i, j]; Прибавляем к S очередной элемент массива X - X[i, j]
   
WriteLn ('Cумма: S = ', s: 6: 1); Вывод полученного значения суммы
ReadLn; Ожидание нажатия клавиши Enter для завершения
End. Конец программы.

 

Билет№20

Нахождение наибольшего элемента в заданной строке матрицы

Пусть задана матрица А из действительных чисел размера 3х4. Найти наибольший элемент во второй строке данной матрицы.

Программа решения задачи:

Program max_st;

Type Matr=array[1..3, 1..4] of real;

Var max: real;

a: Matr;

i, j: integer;

begin

for i: =1 to 3 do

for j: =1 to 4 do

begin
writeln(‘Введите элемент а[‘, i, ', ', j, ']');

readln(a[i, j]);

end;

max: =a[2, 1];

for j: =2 to 4 do

if max< a[2, j] then max: =a[2, j];

writeln(‘Наибольший элемент второй строки=', max: 8: 2);

end.

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

Билет№21

Файл - это упорядоченная последовательность однотипных компонентов, расположенных на внешнем носителе. Файлы предназначены только для хранения информации, а обработка этой информации осуществляется программами. Использование файлов целесообразно в случае:

1. долговременного хранения данных;

2. доступа различных программ к одним и тем же данным;

3. обработки больших массивов данных, которые невозможно целиком разместить в оперативной памяти компьютера.

В Паскале определены текстовые файлы, типизированные и нетипизированные. Файл, не содержащий ни одного элемента, называется пустым. Создается файл путем добавления новых записей в конец первоначально пустого файла. Длина файла, т.е. количество элементов, не задается при определении файла.

Все файлы должны быть описаны в программе либо в разделе переменных VAR, либо в разделе типов TYPE. Под чтением файла понимают ввод данных из внешнего файла, находящегося на диске, в оперативную память машины. Запись в файл - вывод результатов работы программы из оперативной памяти на диск в файл.

Работа с файлами выполняется следующими процедурами:

Assign – устанавливает связь между именем файла в программе (файловой переменной ) и физическим именем файла, принятым в ОС.
Reset - открывает существующий файл для чтения.
Rewrite – создает и открывает новый файл для записи на внеш нем устройстве (если файл ранее существовал, вся предыдущая информация из него стирается).
Close - закрывает открытый файл.

Текстовые файлы

Текстовые файлы – файлы на диске, состоящие из символов ASCII. Для разделения строк используются символы «конец строки». Текстовые файлы являются файлами с последовательным доступом. В любой момент времени доступна только одна запись файла. Другие записи становятся доступными лишь в результате последовательного продвижения по файлу. Текстовые файлы внутренне разделены на строки, длины которых различны. Для разделения строк используется специальный маркер конца строки. Объявляются текстовые файлы переменной типа text. Обрабатывать их можно только последовательно и с помощью процедур и функций:

Readln (f, st )- чтение строки st из файла f и переход на начало следующей;
Writeln (f, st )- запись строки st в файл f и маркера конца строки;
Append (f ) - процедура, открывающая файл f для добавления строк в конец файла;
Eoln (st )- логическая функция, результат выполнения которой равен TRUE, если достигнут маркер конца строки st.

Типизированные файлы

Типизированные файлы – это файлы, состоящие из нумерованной последовательности объектов (записей) любого типа. С такими файлами можно работать в режиме прямого доступа, при котором выполняется непосредственное об ращение к любой записи файла. Каждая запись файла имеет свой номер, начиная с 0 и т.д.
Процедуры и функции обработки файлов:

1) Write и Read- записывают и читают информацию из указанного файла и перемещают указатель файла к сле дующей записи.
2) Seek (файловая переменная, номер записи); процедура перемещения указателя на запись файла с заданным номером.
3) Truncate (файловая переменная); процедура, усекающая файл по текущей позиции указа теля файла, т.е. все записи, находящиеся после указателя фай ла, удаляются.
4) Функция Filesize (файловая переменная); имеет тип Integer и определяет размер файла, т.е. число записей.
5) Функция Filepos (файловая переменная); имеет тип Integer и возвращает текущую позицию указателя файла.

Для добавления записей в конец файла используются процедуры:

Readln (a );
Seek (f, filesize (f));
Write (f, a);


Поделиться:



Последнее изменение этой страницы: 2017-03-14; Просмотров: 1420; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь