Поиск заданного элемента в массиве
12 Некоторые алгоритмы Обработки массивов
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 обязательно должна быть описана в процедуре.
12
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (161)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |