Организация поиска и сортировки в массивах

Автор работы: Пользователь скрыл имя, 14 Января 2014 в 16:09, лабораторная работа

Краткое описание

Цель работы:
1. Закрепить знания и навыки по работе с массивами.
2. Познакомиться с понятием сортировка массива, изучить различные алгоритмы сортировки ( сортировка методом прямого выбора и методом обмена).
3. Научиться находить элементы массива с заданными свойствами с помощью метода перебора.
4. Изучить и реализовать в виде программы алгоритм бинарного поиска. ( метод деления пополам, двоичного поиска ).

Вложенные файлы: 3 файла

Лр_6_ПоискИсортировкаВмассиве.doc

— 136.50 Кб (Просмотреть документ, Скачать файл)

ОАиП_Лр_4_ОдномерныеМассивы.doc

— 110.00 Кб (Скачать файл)

Лабораторная  работа № 4.

Тема: Разработка, отладка и испытание программ обработки одномерных массивов.

Цель  работы:

  1. Научиться организовывать ввод и вывод  одномерного массива.
  2. Осуществлять типовые действия над одномерными массивами (подсчет суммы, произведения элементов массива).
  3. Осуществлять  поиск в массиве (максимального элемента, минимального элемента, элемента с заданными свойствами).
  4. Осуществлять перестановки элементов в массиве.

Программное обеспечение: Pascal (TP или BP),  или ABCPascal, или FreePascal.

Аппаратное  обеспечение: ЭВМ типа IBM.

Порядок выполнения работы

  1. Записать тему и цель лабораторной работы.
  2. Ознакомиться с краткими теоретическими сведениями по теме лабораторной работы.
  3. Ответить на контрольные вопросы (ответы на контрольные вопросы оформить в отчет).
  4. Выполнить практическую часть работы.

Задание №1. Обработка одномерных массивов.

Задание №2_Обработка 2-х массивов

  1. Оформить отчет о проделанной работе. К одной любой задаче разработать блок-схему.
  2. Защитить работу и сдать ее преподавателю. 

 

Контрольные вопросы

  1. Что такое массив? Какие виды массивов вам известны.
  2. Что называют элементом массива? Что называют индексом элемента массива? Приведите примеры.
  3. Элементы какого типа может содержать массив?  Какие типы данных допустимы для индексов элементов массива?
  4. Сколько элементов может содержать массив?  Сколько индексов может быть у одного элемента массива?

        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. Дан одномерный целочисленный массив А из пяти элементов:

Индексы

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 do

   begin

         write ( ‘ a[ ‘ , i , ’ ]= ’ );

          readln ( a[ i ] ) ;

   еnd ;

For i:=1 to n do

    begin

           writeln ( a[ i ]) ;

    end.

 


 

 

Методы  обработки  одномерных массивов

     Сумма элементов массива.

     Пример  программы, которая сначала вводит 30 реальных чисел, организовывает  их  хранение  в массиве,  определяет сумму элементов этого массива и выдаёт результат на экран.

     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-х массивов

  1. Заданы два массива А(5) и В(4). Первым на печать вывести массив, сумма значений которого окажется наименьшей.
  2. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и прибавить его ко всем элементам массивов. На печать вывести исходные и преобразованные массивы.
  3. Заданы два массива А(5) и В(5). В каждом из массивов найти среднее арифметическое всех элементов массивов. На печать вывести исходные массивы и найденные значения.
  4. Заданы два массива А(5) и В(4). Первым на печать вывести массив, содержащий наибольшее значение. Напечатать также это значение и его порядковый номер.
  5. Заданы два массива А(5) и В(5). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наименьшее их количество.
  6. Заданы два массива А(5) и В(5). Подсчитать в них количество положительных элементов и первым на печать вывести массив, имеющий наименьшее их количество.
  7. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, меньших значения t  и первым на печать вывести массив, имеющий наименьшее их количество.
  8. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
  9. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
  10. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и разделить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
  11. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, кратных трем  и первым на печать вывести массив, имеющий наибольшее их количество.
  12. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, меньших значения t и первым на печать вывести массив, имеющий наибольшее их количество.
  13. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые больше 0.
  14. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые кратны двум.
  15. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые больше значения T.

ОАиП_Лр_5_ДвумерныеМассивы.doc

— 844.50 Кб (Просмотреть документ, Скачать файл)

Информация о работе Организация поиска и сортировки в массивах