Рудник_Э-11_Лабораторная_работа_8
.docxУчреждение образования
Гомельский государственный технический университет имени П.О. Сухого
Кафедра «Информатика»
Лабораторная работа № 8
по дисциплине: “Информатика”
Обработка одномерных массивов
Дата сдачи отчета Выполнил студент группы Э-11
Рудник Роман
Допуск к защите
Принял преподаватель
Дата защиты Богданова Н.С.
Цель работы: Получить навыки разработки и реализации типовых алгоритмов обработки одномерных массивов на языке Delphi. Научиться находить максимальный и минимальный элемент массива и определять его место в массиве; изменять значения и расположение элементов массива; обрабатывать элементы массива, находящиеся перед (после) максимальным (минимальным) элементом.
Задание
В каждой из задач (таблица 2) предполагается, что задан массив из N чисел. Программа должна:
-
вводить размерность и элементы исходного массива;
-
выполнять действия в соответствии с условием задачи;
-
выводить:
-
исходный массив,
-
максимальный или минимальный элемент массива и его номер,
-
-
массив, полученный в результате выполнения задания.
Исходные данные для отладки программы выбрать самостоятельно. Для ввода и вывода массива использовать визуальный компонент StringGrid.
19 |
Найти максимальный элемент и поменять его местами с четвертым элементом массива. |
Вид окна проекта
Таблица используемых ВК
Элемент интерфейса |
Компонент |
Свойство |
Значение свойства |
||
Заголовок окна |
Form1 |
Caption |
Лабораторная работа 8 |
||
Число элементов массива |
Label1 |
Caption |
Число элементов массива |
||
Кнопка решить |
Button1 |
Caption |
Решить |
||
Поле ввода числа элементов массива |
Edit1 |
Text |
|
||
Условие задачи |
Memo1 |
lines |
Найти максимальный элемент и поменять его местами с четвертым элементом массива. |
||
Таблица для ввода массива |
Stringgrid1 |
Colcount Rowcount Fixsedcols Fixsedrows Options.goediting Options.gotabs |
9 1 0 0 True true |
||
Таблица для вывода массива |
Stringgrid2 |
Colcount Rowcount Fixsedcols Fixsedrows Options.goediting Options.gotabs |
9 1 0 0 True true |
||
Место для вывода результата |
Memo2 |
lines |
|
Таблица используемых событий
Компонент |
Событие |
Имя процедуры обработки события |
Реализуемый алгоритм |
Button1 |
OnClick |
Tform1.Button1Click |
Расчёт массива |
Таблица используемых переменных
Имя переменной в задаче |
Имя переменной в программе |
Тип переменной |
Комментарий
|
i |
i |
byte |
Номер элемента |
n |
n |
byte |
Кол-во элементов |
nom |
nom |
byte |
Кол-во элементов суммы |
max |
max |
real |
сумма |
p |
p |
real |
переменная |
x[i] |
x[i] |
real |
Элемент массива |
|
|
|
|
|
|
|
|
Схема олгаритма
Начало
Ввод n
Ввод массива
max:=x[i]
nom:=1
i:=1
i<=n
max<x[i]
max:=x[i]
nom:=i
i:=i+1
nom=4
Обмен нне нужен
Вывод max элемента,
номер
p:=x[nom]
x[nom]:=x[4]
x[4]:=p
вывод массива
Конец
Рукописные тесты
Тест1
Исходные данные: Число элементов массива=6
массив: 1, 2, 3, 4, 5, 6
Ожидаемый результат : Элемент= 6
Номер=6
Тест2
Исходные данные: Число элементов массива=4
массив: 1,2,3,4
Ожидаемый результат : “Обмен не нужен”
Распечатка текста процедуры
procedure TForm1.Button1Click(Sender: TObject);
var x:array[1..100] of real;
i,n,nom:byte;
max, p:real;
begin
n:=StrToInt(Edit1.Text);
stringgrid1.colcount:=n;
for i:=1 to n do
x[i]:=strtofloat(stringgrid1.cells[i-1,0]);
max:=x[1];
nom:=1;
i:=1;
while i<=n do
begin
if (max<x[i]) then
begin
max:=x[i];
nom:=i;
end;
i:=i+1;
end;
if (nom=4) then
showmessage('обмен не нужен')
else
begin
p:=x[nom];
x[nom]:=x[4];
x[4]:=p;
memo1.Lines.ADD('Максимальный элемент= '+floattostr(max)+' номер элемента= '+floattostr(nom));
end;
with stringgrid2 do
begin
colcount:=n;
visible:=true;
for i:=1 to n do
cells[i-1,0]:=floattostr(x[i]);
end;
end;
Распечатка формы с результатами работы
Вывод: Получил навыки разработки и реализации типовых алгоритмов обработки одномерных массивов на языке Delphi. Научился находить максимальный и минимальный элемент массива и определять его место в массиве; изменять значения и расположение элементов массива; обрабатывать элементы массива, находящиеся перед (после) максимальным (минимальным) элементом.