Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


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

Тип Реферат
Предмет Информатика
Просмотров
580
Размер файла
56 б
Поделиться

Ознакомительный фрагмент работы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Задано:массивы 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;

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

Задано: массив 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;

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

Задано: массив 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;

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

Задано:массив 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). Поиск минимального элемента аналогичная процедура.

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

Задано: массив 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 обязательно должна быть описана в процедуре.

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

Задано: массив A=(a1,a2,...,an); N - размер массива; m – число позиций, на которые надо сдвинуть массив вправо ( влево ).

Сформировать: сдвинутый массив, например : исходный массив A=(a1,a2,a3,a4,a5,), а сдвинутый вправо на 2 позиции A=(a4,a5,a1,a2,a3).

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

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

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

M - число позиций сдвига;

Результат: A - массив, циклически сдвинутый на M позиций вправо;

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

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

P - массив размером не менее N (вариант 1) для временного хранения "хвоста" массива;

P - переменная (вариант 2) для временного хранения элемента массива A; Y - управляющая переменная внутреннего цикла (вариант 2).

Вариант 1: "хвост" массива пересылается во вспомогательный массив, остальные элементы перемещаются вправо на M позиций. Порядок перемещения обратный, прямой привел бы к искажениям массива. Далее в первые элементы массива A пересылаются элементы вспомогательного массива. Эта процедура повторяется Мраз.

Procedure SDVIG_VAR1( n, m : integer; A : mas; var A : mas ;);

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

Var P : mas;

begin

for i := 1 to m do

P[ i ] := A [ n - m + i ];

for i := n - m downto 1 do

A [ i+m ] := A[ i ];

for i := 1 to m do A [ i ] := P [ i ] ;

end;

Вариант 2. Во вспомогательную переменную каждый раз пересылается последний элемент массива А, затем все элементы сдвигаются вправо на одну позицию (в обратном порядке) и на место первого элемента помещается содержимое вспомогательной переменной.

Procedure SDVIG_VAR2( n, m : integer; A : mas; var A : mas ;);

{ где mas должен быть описан в главной программе, см 7.1.}

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

Var P : real;

begin

for i := 1 to m do

begin P := A [ n ] ;

for y := n downto 2 do A[ y ] := A [ y-1] ;

A [1] := P ;

end

end;

При сравнении двух вариантов сдвига элементов массива на m позиций вправо можно отметить, что в варианте 1 потребуется больше памяти, а в варианте 2 - больше затрат времени.

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

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

Требуется: расположить элементы массива А в порядке возрастания (убывания).

Существует много различных методов. Рассмотрим один из них, основанный на поиске минимального (максимального) элемента массива или его части.

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

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

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

Результат:

А - массив, упорядоченный по возрастанию;

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

P - переменная для хранения промежуточного значения минимального элемента;

K - индекс минимального элемента;

I - индекс элемента упорядоченного массива (управляющая переменная внешнего цикла);

J - индекс элемента части массива, в котором ищется минимальный элемент (управляющая переменная внутреннего цикла).

Вначале найдем минимальный элемент массива и поменяем его местами с первым элементом, затем определим минимальный элемент из оставшихся элементов (кроме первого) и поменяем его местами со вторым элементом.

Procedure SORTIROV (n : integer; A :mas; var A : mas; var K : integer);

{ где mas должен быть описан в главной программе, см 7.1.}

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

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

begin

for i := 1 to n - 1 do

begin P := A [ i ] ; k := i ;

for j := i + 1 to n do

If A [ i ] < P then begin P := A [ i ] ; k := j end;

A [ k ] := A [ i ] ; A [ i ] := P

end

end;

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

Представленные выше несколько типовых алгоритмов работы с массивами, так же как и более сложные фрагменты программ, можно легко проверить (так называемая, безмашинная отладка программ, или "прокрутка"). Для этого задаются конкретными значениями исходных данных и выполняют операторы процедур или программ шаг за шагом, фиксируя значение переменных после каждого выполнимого оператора.

Типовые алгоритмы оформлены в виде процедур, которые при необходимости можно использовать при программировании конкретных задач, связанных с обработкой массивов. Ниже рассмотрим несколько примеров обработки массивов.

Пример 1.

Упорядочить по возрастанию одномерный массив A размером N.

program primer_1;

const N = 5;

var A : array [ 1..N ] of real;

p : real;

i, j, k, g : integer;

begin

writeln('упорядочение массива по возрастанию');

writeln('введите элементы массива через пробел в конце ENTER ');

for i := 1 to N do read (A [ i ] ); writeln;

{ второй вариант ввода одномерного массива }

{ for i := 1 to N do

begin write (' введите A [', i:2 ,' ] = ' ) ; readln ( A[i] ); end;}

{ для упорядочивания массива задействуем промежуточные

переменные p - для запоминания минимального значения массива,

k - для запоминания его местонахождения }

for i := 1 to N - 1 do

begin

p := a [ i ] ; k := i ;

for j := i + 1 to N do

if A [ j ] < p then begin p := A[ j ]; k := j ; end;

A [ k ] := A [ i ] ; A [ i ] := p ;

end;

for i := 1 to N do

begin write( ' A [ i ] ='); writeln( A [ i ] : 8 : 5 ); end;

end.

В следующем примере представлен более удобный вариант оформления программ, где самостоятельные части работы вынесены в процедуры. Главная программа ( вызывающая ) получается тогда очень короткой, а отладка таких программ значительно проще.

Пример 2.

Программа для умножения сцепленных матриц A = ?aik? размера m x n и B = ?bik? размера r x s ( матрицы называются сцепленными, если число столбцов первой матрицы равно числу строк второй ). Произведение AB двух сцепленных матриц есть матрица C=?cik? размера m x s, где cik = ? aijbjk.

program primer_2;

uses CRT;

const n = 3; m = 2; r = 3; s = 3;

type massiv = array [1..10,1..10] of real;

var a,b,c : massiv;

sum : real;

i, j, k : integer;

ch : char;

procedure VVOD_2(n,m:integer;ch:char;var a:massiv);

{ процедура ввода двумерной матрицы построчно}

begin

writeln( ' введите элементы массива ');

for i := 1 to n do

begin

for j := 1 to m do read ( A [ i , j ] );

writeln; { для перехода на новую строку}

end;

end;

procedure PRINT_MAS(n,m:integer;ch:char;a:massiv);

{ печать матрицы построчно }

{ n,m - размер матрицы }

{ ch - название матрицы , для обозначения при выводе }

begin

writeln(' Элементы массива ',ch);

for i := 1 to n do

begin

for j := 1 to m do write(a [ i , j ] : 8 : 2);

writeln; { для перехода на новую строку }

end;

end;

begin {---------- main ------------------}

{ В рассматриваемом примере размеры матриц A, B, C заданы с помощью

констант. Заметим, что лучше это сделать вводом с клавиатуры или чтени-

ем данных из файла }

VVOD_2(m,n,'A',a); { вызов процедуры VVOD_2 для ввода матрицы A }

VVOD_2(r,s,'B',b); { вызов процедуры VVOD_2 для ввода матрицы B }

{ формирование матрицы C равной произведению матриц A*B }

for i := 1 to m do

for k := 1 to s do

begin

sum := 0; { обнуление переменной для вычисления суммы }

for j := 1 to N do sum := sum + a[ i , j ] * b [ j , k ] ;

c[ i , k ] := sum;

end;

{ вывод на экран исходных данных и результатов }

PRINT_MAS(m,n,'A',a); { m,n - размерыматрицы A }

PRINT_MAS(r,s,'B',b); { r,s - размерыматрицы B }

PRINT_MAS(m,s,'C',c); { m,s - размерыматрицы C }

end.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно