Автор работы: Пользователь скрыл имя, 14 Января 2014 в 16:09, лабораторная работа
Цель работы:
1. Закрепить знания и навыки по работе с массивами.
2. Познакомиться с понятием сортировка массива, изучить различные алгоритмы сортировки ( сортировка методом прямого выбора и методом обмена).
3. Научиться находить элементы массива с заданными свойствами с помощью метода перебора.
4. Изучить и реализовать в виде программы алгоритм бинарного поиска. ( метод деления пополам, двоичного поиска ).
Лабораторная работа № 4.
Тема: Разработка, отладка и испытание программ обработки одномерных массивов.
Цель работы:
Программное обеспечение: Pascal (TP или BP), или ABCPascal, или FreePascal.
Аппаратное обеспечение: ЭВМ типа IBM.
Порядок выполнения работы
Задание №1. Обработка одномерных массивов.
Задание №2_Обработка 2-х массивов
Контрольные вопросы
5. Какие из приведенных описаний одномерных массивов являются правильными и почему?
a) Var a: Array[1..20] of Integer;
b) Type Myarrray: Array[1..20]
Var b: Myarrray;
c) Var sd:Array[1..n] of Integer;
d) Var dd:Array[1] of integer;
6. Сколько элементов в каждом из следующих массивов
a) Var mb: Array[2..20] of Integer;
b) Type myarray1[2..20] of Integer;
myarray2[-5..5] of Integer;
Var aa: myarray1;
bb: myarray2;
Индексы |
1 |
2 |
3 |
4 |
5 |
Элементы |
2 |
5 |
-7 |
6 |
3 |
Постройте массив С, который будет получен в результате выполнения алгоритма:
i:=1;
While i<=5 do
Begin
C[i]:=sqr (A[i])-1;
i:=i+1;
End;
Краткие теоретические сведения
Одномерные массивы.
Часто возникает необходимость работать с одними и теми же переменными при различных условиях. Хранение чисел в простой ячейке не позволяет производить запись в них несколько раз, так как старое содержимое уничтожается и заменяется новым значением. В этом случае необходим другой способ организации и хранения данных, Ячейки с индексом, то есть массив.
Итак, Массив - это именованный набор элементов с фиксированным количеством однотипных данных, где каждый элемент имеет уникальный номер (индекс), и этот номер определяет местоположение элемента в массиве.
Каждый элемент имеет уникальный номер. Количество элементов данного массива определяет его размерность.
Индекс - это числовой или буквенный показатель, определяющий положение (порядковый номер) элемента в массиве.(Относится только к целому типу данных (integer));
Описание массива (после "var"):
также массив может быть описан через константу: z:array[1..n] of integer;
примечание: n должна быть описана через функцию: const z=40; до описания массива
Одномерный массив: | |
Ввод с клавиатуры |
Вывод на экран |
For i:=1 to n dobegin write ( ‘ a[ ‘ , i , ’ ]= ’ ); readln ( a[ i ] ) ; еnd ; |
For i:=1 to n dobegin writeln ( a[ i ]) ; end.
|
Методы обработки одномерных массивов
Сумма элементов массива.
Пример
программы, которая сначала
PROGRAMM ex_1;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
s: real; {сумма элементов}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
s:=0; {обнуление счётчика суммы}
FOR i:=1 TO 30 DO s:=s+m[i]; {вычисление суммы}
Write('Сумма элементов последовательности равна ',s);
Readln; { пауза }
END.
Число положительных элементов массива
Пример программы, которая сначала вводит 30 реальных чисел, организовывает их хранение в массиве, определяет количество положительных элементов и выдаёт сообщение на экран.
PROGRAMM ex_2;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
n: integer; {счётчик положительных эл-ов}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
n:=0; {обнуление счётчика п. эл-ов}
FOR i:=1 TO 30 DO
if m[i]>=0 then n:=n+1; {вычисление количества п. эл-ов}
Write('Последовательность содержит ',n,' положительных эл-ов');
Readln; { пауза }
END.
Определение максимального элемента
Пример программы, которая сначала вводит 30 реальных чисел, затем организовывает их хранение в массиве, определяет значение и индекс (номер) максимального элемента этого массива и выдаёт сообщение на экран.
PROGRAMM ex_3;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
max: real; {значение максимального элемента}
t: integer; {индекс (номер) макс. элемента}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
max:=m[1]; {допустим, что 1-й элемент - максимален}
t:=1;
FOR i:=1 TO 30 DO
if m[i]>max then {проверка нашего утверждения}
begin
max:=m[i];
t:=i;
end;
Writeln('Максимальный элемент последовательности равен ',max);
Writeln('Номер максимального элемента ',t);
Readln; { пауза }
END.
Поиск элемента в неупорядоченном массиве
Пример программы,
которая сначала вводит 30 реальных
чисел, организовывает их
который равен контрольному числу.
PROGRAMM ex_4;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
p: real; {значение искомого элемента}
t: integer; {индекс (номер) иском. элемента}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
Write('Введите контрольное число ');
Readln(p);
t:=0; {допустим, что в массиве нет такого элемента}
FOR i:=1 TO 30 DO
if m[i]=p then {проверка нашего утверждения}
begin
t:=i;
write('Эл. N ',i,' равен искомому');
end;
if t=0 then write('В массиве нет такого элемента');
Readln; { пауза } END.
ПРИМЕРЫ ПРОГРАММ
Пример 1. Дан массив А на 5 вещественных значений. Надо определить и вывести сумму его положительных элементов.
Const a : array[1..5] of real = (1, -2, 3, -4, 5);
Var s : real; i : integer;
Begin s:=0;
for i:=1 to 5 do
if a[i]>0 then s:=s+a[i]; writeln(‘s=’, s:12);
End.
Пример 2. Дан массив А на 5 значений. Найти и вывести AMIN – минимальное значение массива и IMIN – его номер в массиве А.
Const a : array[1..5] of real = (7, 5, 1, 2, 4);
Var i, imin : integer;
Begin imin :=1;
for 1:=2 to 5 do
if a[i]<a[imin] then imin :=i;
writeln(‘Минимальное значение A[‘, imin, ‘]=’, A[imin]:12);
End.
Пример 3. Дан массив А на 5 значений. Суммировать значения элементов массива до появления первого отрицательного элемента, т.е. значения A[I]<0. Полученную сумму вывести.
Const a : array[1..5] of real = (7, 5, 1, -2, 4);
Label m;
Var s : real; i : integer;
Begin s :=0;
for i:=1 to 5 do
begin if a[i]<0 then goto m; s :=s+a[i];
end;
m: writeln(‘s=’, s:12);
Практическая часть работы
Индивидуальные задания
Задание №1. (выполняется в соответствии с вашим вариантом)
Необходимо организовать указанную в задании обработку одномерного массива.
№ вар. |
Количество элементов |
Способ ввода |
Способ вывода |
Обработка массива |
Поиск |
Перестановки вмассиве |
1 |
10 вещественные |
Ввод с клавиатуры, описать в константах количество элементов |
В строку через один пробел |
Сумма элементов массива, которые оканчиваются цифрой ноль |
max |
Поменять местами максимальный и первый элементы |
2 |
8 целые |
Ввод с клавиатуры, описать в константах количество элементов |
В строку, разделяя элементы * |
Произведение элементов массива, которые делятся на 3. |
min |
Поменять местами максимальный и последний элементы |
3 |
6 целые |
Ручной ввод с клавиатуры |
В столбец |
Сумма положительных элементов |
min |
Поменять местами максимальный элемент и его соседа справа |
4 |
7 целые |
Ручной ввод с клавиатуры |
В строку, разделяя элементы ++ |
Сумма отрицательных элементов |
min |
Поменять местами максимальный элемент и его соседа слева |
5 |
9 целые |
Ручной ввод с клавиатуры |
В столбец |
Подсчет количества четных элементов |
max |
Поменять местами максимальный и минимальный элементы |
6 |
11 целые |
Датчик случайных чисел |
В строку через один пробел |
Подсчет количества нечетных элементов |
min |
Поменять местами первый и последний элементы массива |
7 |
15 вещественные |
Присваиванием конкретных значений элементам массива |
В строку через два пробела |
Произведение отрицательных элементов |
max |
Поменять местами 4 и 10 элементы массива |
8 |
20 вещественные |
Датчик случайных чисел |
В строку через один пробел |
Найти количество элементов равных 10 |
Элементов, равных нулю |
Поменять местами 3 и 6 элементы массива |
9 |
25 целые |
Датчик случайных чисел |
В строку через один пробел |
Сумма элементов |
Элементов, равных 10 |
Поменять местами максимальный элемент и 7 элемент массива |
10 |
30 целые |
Присваиванием конкретных значений элементам массива |
В строку , используя форматированный вывод |
Сумма положительных элементов |
Элементов, равных 100 |
Поменять местами 8 и 29 элементы массива |
11 |
4 вещественные |
Ручной ввод с клавиатуры |
В столбец |
Найти количество отрицательных элементов |
max |
Поменять местами
минимальный элемент и |
12 |
12 вещественные |
Датчик случайных чисел |
В строку через два пробела |
Сумма отрицательных элементов |
Элементов, равных 5 |
Поменять местами 5 и 10 элементы массива |
13 |
13 целые |
Датчик случайных чисел |
В строку , используя форматированный вывод |
Сумма элементов массива, которые делятся на 4. |
Элементов, равных -88 |
Поменять местами 3 и 12 элементы массива |
14 |
5 вещественные |
Ручной ввод с клавиатуры |
В столбец |
Среднее арифметическое элементов массива |
min |
Поменять минимальный и 4 элементы массива |
15 |
7 целые |
Присваиванием конкретных значений элементам массива |
В столбец |
Произведение положительных элементов массива |
max |
Поменять местами максимальный элемент и 3 элемент массива. |
Задание №2_Обработка 2-х массивов
Информация о работе Организация поиска и сортировки в массивах