Мегаобучалка Главная | О нас | Обратная связь


Поиск заданного элемента в массиве



2020-03-19 146 Обсуждений (0)
Поиск заданного элемента в массиве 0.00 из 5.00 0 оценок




Некоторые алгоритмы

Обработки массивов

 

1 Суммирование двух массивов одинакового размера

 

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

 

3 Определение числа элементов массива, удовлетворяющих заданному условию

 

4 Суммирование элементов массива, удовлетворяющих заданному условию

 

5 Инвертирование массива

 

6 Формирование массива из элементов другого массива, удовлетворяющих заданному условию

 

7 Поиск максимального (минимального) элемента в массиве с запоминанием его положения в массиве

 

8 Поиск заданного элемента в массиве

 

9 Циклический сдвиг элементов массива

 

10 Упорядочение Массива

 

Суммирование двух массивов одинакового размера

 

Задано : массивы A =(a1,a2,...,an) , B =(b1,b2,...,bn).

Сформировать: массив C =(c1,c2,...,cn) , где Сi = Ai+Bi; i=1,2,...,n.

Задача сводится к организации цикла по i и вычислению Ci=Ai+Bi при каждом значении i от 1 до n.

Исходные данные:

N- размер массива; 

A, B - массивы слагаемые размером N;

Результат: массив С - размером N;

Вспомогательные переменные: I - индекс - управляющая переменная цикла.

       

Procedure SUM_MAS (n : integer; A,B :mas; var C : mas);

{ где mas должен быть описан в главной программе в разделе описания типов , например так :

   type mas = array[1..100 ] of real ;

тогда это будет процедура для суммирования двух одномерных массивов размером не более 100 элементов }

     begin

             for i := 1 to n do C[i] := A[i]+B[i];

     end;

 

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

 

Задано: массив P = (P1,P2,...,Pn) .

Определить: сумму элементов массива.

Исходные данные:

N - размер массива; 

P - массив размером N;

Результат: S - сумма элементов;

Вспомогательная переменная: I - индекс - управляющая переменная цикла.

       

Procedure SUMMA (n : integer; A :mas; var S : real );

{ процедура для суммирования элементов одномерного массива }

   begin S:=0; { обнуление переменной под сумму }

          for i := 1 to n do S := S+P[i]

   end;

 

3 Определение числа элементов массива, удовлетворяющих заданному условию

 

Задано: массив P = (P1,P2,...,Pn); T - заданное число.

Определить: сколько элементов удовлетворяет заданному условию, например Pi > T .

Исходные данные:

N - размер массива; 

P - массив размером N;

T - заданное значение, с которым сравниваются элементы массива.

Результат:  K - число элементов массива P, удовлетворяющих условию.

Вспомогательная переменная: I- индекс - управляющая переменная цикла.

 

 Procedure USLOVIE ( n : integer; P :mas; T: real; var K : integer);

{процедура определения числа элементов, удовлетворяющих условию}

   begin

       k := 0; { обнуление переменной под счетчик чисел }

         for i := 1 to n do if P[ i ] > T then k := k+1

   end;

 

4 Суммирование элементов массива, удовлетворяющих заданному условию

 

Задано: массив P = (P1,P2,...,Pn); T - заданное число.

Определить: сумму элементов массива P, удовлетворяющих заданному условию, например Pi > T .

Исходные данные:

N - размер массива; 

P - массив размером N;

T - заданное значение, с которым сравниваются элементы массива;

Результат: S - сумма элементов массива P, удовлетворяющих условию.

Вспомогательная переменная : I - индекс - управляющая переменная цикла.

 

 Procedure SUM_USLOV ( n : integer; P :mas; T: real; var S : real);

{процедура определения суммы элементов, удовлетворяющих условию}

   begin   S := 0; {обнуление переменной под сумму элементов}

         for i := 1 to n do if P [ i ] > T then S := S+1

      end;

 

Инвертирование массива

 

Задано: массив C=(c1,c2,...,cn).

Требуется: изменить порядок следования элементов массива C на обратный, используя одну вспомогательную переменную.

Исходные данные:

N - размер массива;

C - массив размером N;

Результат:

C - инвертированный массив;

Вспомогательные переменные:

I -индекс, управляющая переменная цикла; 

M=n/2 - вычисляется до входа в цикл для уменьшения объема вычислений; P - используется при перестановке двух элементов массива.

 

Procedure INVER_MAS ( n : integer; C :mas; var C : mas);

Var m : integer; p : real; { локальные переменные }

   begin m := n div 2 ; { целочисленное деление }

        for i := 1 to m do

           begin p := C[ i ]; C[i] := C[N-i+1]; C[N-i+1] := p end;

   end;

 

6 Формирование массива из элементов другого массива, удовлетворяющих заданному условию

 

Задано: массив A=(a1,a2,...,an), T - заданное число.

Сформировать: массив B=(b1,b2,...,bn), состоящий из элементов массива, удовлетворяющих условию Ai>T.

Заметим, т .к. индексы элементов массивов A и B не совпадают (не все элементы массива Ai>T), то для обозначения индексов массива B должна быть предусмотрена другая переменная.

Исходные данные:

N - размер массива;

A - массив размером N; 

T - заданное значение;

Результат:

B - массив размером не больше N;

Y - число элементов массива B;

Вспомогательная переменная: I - индекс - управляющая переменная цикла.

 

   Procedure MAS_NEW (n:integer;T:real;A:mas;var B: mas; var Y: byte);

{ где mas должен быть описан в главной программе в разделе описания типов , например так :

   type mas = array[1..100 ] of real ;

тогда это будет процедура для суммирования двух одномерных массивов размером не более 100 элементов }

{ процедура включения в новый массив элементов, удовлетворяющих условию }

   begin Y := 0; { обнуление ячейки под счетчик элементов массива В }

        for i := 1 to n do

          If A[ i ] > T then begin Y := Y+1; B[ Y ] := A[ i ] end;

   end;

 

Поиск максимального (минимального) элемента в массиве с запоминанием его положения в массиве

 

 Задано : массив A=(a1,a2,...,an).

 Найти: max (min) элемент массива A и его индекс.

 Исходные данные:

N - размер массива;

A - массив размером N;

Результат:

A_max максимальный элемент массива A;

K - его индекс.

Вспомогательная переменная: I - индекс управляющая переменная цикла.

 

Procedure MAX_MAS1(n:integer; A :mas; var A_max :real; var K byte);

{ процедура поиска максимального элемента массива и его номера }

   begin A_max := A[1]; K := 1;

      for i := 2 to n do

         If A_max<A[i] then begin K := i; A_max := A[i] end;

   end;

 

Примечание: Если в массиве несколько max элементов (имеют одно и то же значение), то в K будет запоминаться первый из них, а чтобы запоминался индекс последнего нужно заменить условие на A_max<=A(I). Поиск минимального элемента аналогичная процедура.

 

Поиск заданного элемента в массиве

 

Задано: массив P=(p1,p2,...pn); элемент L (массив может быть как числовым так и символьным.

Найти: Есть ли в массиве P, элемент равный L. Результат присвоить символьной переменной.

Исходные данные:

N - размер массива;

P - массив размером N;

L - значение, которое ищется в массиве;

Результат: R - имеет значение "элемент, равный L есть" или "элемента, равного L нет" в зависимости от результата поиска;

Вспомогательная переменная: I - индекс управляющая переменная цикла.

 

Procedure POISK ( n:integer; P :mas; L :integer; var R :string);

{ процедура поиска заданного значения среди элементов массива }

     Label m ;

      begin

         R :=" элемента равного L в массиве нет " ;

                for i := 1 to n do

                  If P[i] = L then

                    begin R := " элемент , равный L есть "; Goto m end;

    m: end;

 

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

 



2020-03-19 146 Обсуждений (0)
Поиск заданного элемента в массиве 0.00 из 5.00 0 оценок









Обсуждение в статье: Поиск заданного элемента в массиве

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (146)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.005 сек.)