Кафедра программирования и информационных технологий
"Получено” Регистрационный номер № _______ от "____” ____________ 200__ г. "Отправлено с замечаниями” Регистрационный номер № _______ от "____” ____________ 200__ г. " Получено повторно” Регистрационный номер № _______ от "____” ____________ 200__ г.
ЛАБОРАТОРНАЯ РАБОТА № __________ По дисциплине "Основы программирования и алгоритмические языки” ________________"Обработка одномерных массивов”____________________ на тему
Цель работы: получение навыков работы с массивами, их вода и вывода, закрепление навыков организации программ циклической структуры. Постановка задачи: 1. Изучить способы описания и использования массивов, алгоритмы сортировки массивов, сортировку выбором, вставками и обменную сортировку. Так же алгоритмы поиска элемента в неупорядоченном и упорядоченном массивах. 2. Разработать алгоритм и составить программу для решения задачи соответствующего варианта. 3. Подобрать наборы тестовых данных. Задание к работе: 1. Если в массиве нет повторяющихся элементов, то упорядочить его по возрастанию. 2. Набрать программу, отладить ее, протестировать. Распечатать текст программы и результаты ее работы на тестовых данных. Ход выполнения работы 1. Наборы тестовых данных. Первый набор тестовых данных: {0,9,8,7,6,5,32,6,4 ,3} Второй набор тестовых данных: {2,4,16,23,34,45,76,91,98,100} 2. Текст программы. PROGRAM LAB5; PROCEDURE SORT_MAS(SIZ:WORD;a:array of byte); VAR S:BYTE;K,i:WORD; BEGIN REPEAT S:=0; BEGIN FOR K:=3 downTO 1 DO BEGIN FOR I:=0 TO (SIZ-K) DO BEGIN IF (A[I]>A[I+1]) THEN BEGIN A[I]:=A[I]+A[I+1]; A[I+1]:=A[I]-A[I+1]; A[I]:=A[I]-A[I+1]; S:=1 END
END END
END; UNTIL S=0; WRITELN('Массив после упорядочивания: '); WRITELN; for k:=1 to SIZ do write(a[k],', '); end; VAR powtor:array[1..256] of byte; a:array[1..10000] of byte; SIZ,w:WORD; q:byte; BEGIN WRITELN('Введите длину массива ');readln(siz); WRITELN('Введите массив:'); for w:=1to siz do begin write('a[',w,']=');readln(a[w]) end; for w:=1 to 256 do powtor[w]:=0; for w:=1 to siz do powtor[(a[w])+1]:=powtor[(a[w])+1]+1; w:=1; Q:=0; repeat begin if powtor[w]>1 then q:=1;; w:=w+1 end; until (q=1) or (w>=255); if q=0 then sort_mas(siz,a) ELSE writeln('Данный массив содержит повторяющиеся элементы!') END.
3. Результаты работы. Пример №1. Введите длину массива 10 Введите массив: a[1]=0 a[2]=9 a[3]=8 a[4]=7 a[5]=6 a[6]=5 a[7]=32 a[8]=6 a[9]=4 a[10]=3 Данный массив содержит повторяющиеся элементы! Пример №2. Введите длину массива 10 Введите массив: a[1]=100 a[2]=2 a[3]=4 a[4]=98 a[5]=76 a[6]=45 a[7]=23 a[8]=91 a[9]=34 a[10]=16 Массив после упорядочивания: 2,4,16,23,34,45,76,91,98,100 4. Описание ошибок, выявленных при отладке программы. При отладке программы ошибок не обнаружено. Выводы: В ходе лабораторной работы были достигнуты следующие цели: 1. Был изучен теоретический материал по обработке массивов данных в языке программирования Pascal. 2. Изучены различные способы описания и использования массивов, алгоритмы сортировки массивов, сортировка выбором, вставками и обменная сортировка. Так же алгоритмы поиска элемента в неупорядоченном и упорядоченном массивах. 3. Разработан алгоритм и составлена программу для решения задачи соответствующего варианта. 4. Подобраны наборы тестовых данных, которые были использованы при прогоне программы на наличие ошибок.