Нахождение максимального элемента массива

Задача 2.

Задан одномерный массив из N чисел. Найти максимальный элемент массива.

Решение:

Program Mass2;

Const X=100;

Var A:Array[1..10] of Integer;

I,N,Max:Integer;

Begin

Writeln(’Введите число элементов массива (N<=10)’);

Readln(N);

Randomize;

For I:=1 to N do A[I]:=Random(X);{заполнение массива случайными числами}

Max:=A[1];

For I:=1 to N do

If Max>A[I] Then A[I]:=Max;

For I:=1 to N do Writeln(’A[’,I,’]=’,A[I]);

Writeln(’Max=’,Max);

End.

Задачи:

1. Задан одномерный массив из N чисел. Найти минимальный элемент массива.

2. Задан одномерный массив из N чисел. Найти разницу между наибольшим и наименьшим элементами массива.

3. Задан одномерный массив из N чисел. Проверить, есть ли в массиве отрицательные элементы и если есть, то найти среди них наименьший.

Сортировка одномерного массива

Задача 3.

Задан одномерный массив из N чисел. Отсортировать все элементы массива по возрастанию.

Решение:

Program Mass3;

Var A:Array[1..10] of Integer;

I,P,N:Integer;

F:boolean;

Begin

Writeln(’Введите число элементов массива (N<=10)’);

Readln(N);

For I:=1 to N do Readln(A[I]);

F:=False;

While F=False do

Begin

F:=True;

For I:=1 to N-1 do

If A[I]>A[I+1] Then

Begin

P:=A[I];

A[I]:=A[I+1];

A[I+1]:=P;

F:=False;

End;

End;

For I:=1 to N do Writeln(’A[’,I,’]=’,A[I]);

End.

Задачи:

1. Задан одномерный массив из N строк, имеющих вид фамилий. Отсортировать все элементы массива по алфавиту.

2. В массиве каждый элемент равен 0, 1 или 2. Переставить элементы массива так, чтобы вначале массива расположились все нули, затем все единицы и, наконец все двойки.

3. Задан одномерный массив из N чисел. Переставить элементы массива так, чтобы отрицательные элементы предшествовали всем неотрицательным.

4. Задан одномерный массив из N чисел и число В. Упорядочить массив по возрастанию и поместить переменную В в соответствующее место массива.

Решение задач, используя одномерные массивы.

1. Задан одномерный массив из N чисел. Составить новый массив, состоящий из тех же чисел, но идущий в обратном порядке.

2. Задан одномерный массив из N чисел и число К. Напечатать «Да», если К совпадает хотя бы с одним из элементов массива и «Нет» в противном случае.

3. Задан одномерный массив из N чисел. Найти количество элементов массива, больших среднего арифметического всех его элементов.

4. Задан одномерный массив из N чисел Определить в массиве число соседств из двух чисел одного знака.

5. Задан одномерный массив из N чисел Найти сумму произведений всех троек соседних чисел.

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

7. Задан одномерный массив из N чисел. Заменить все элементы массива на сумму предыдущего и последующего их значений.

8. Задан одномерный массив из N чисел. Подсчитать количество неповторяющихся элементов массива.

9. Задан одномерный массив из N чисел. Составить массив У, где Y[I]:=Min(X[1],X[2],…,X[N]).

Двумерные массивы

Рассмотрим работу с двумерными массивами (в алгебре они называются матрицами):

Дадим таблице имя - Tab

 
-1

Каждое число в таблице имеет тип Integer. Это - тип злементов (M).

Индексы данной таблицы изменяются от 1 до 8 . У двумерных массивов два списка (B1,B2).

Таким образом, описание этого массива (в разделе Var) выглядит так : Tab:Array[1..3,1..4] of Integer;

Задав конкретные значения индексов, можно выбрать определенный элемент массива. Например оператор:

N:=A[1,3];

Присвоит переменной N значение элемента массива, имеющего индекс строки 1, индекс столбца 3, т.е. число 15.

Задача 4.

Задан массив из целых чисел, размерностьюN*M (N-строки, M-столбцы). Вывести на экран:

а) N-ю строку; б) M-й столбец; в) весь массив.

Решение:

Program Mass4;

Var Tab:Array[1..10,1..10] of Integer;

N,M,X,Y:Integer;

Begin

Writeln(’Введите количество строк массива (N<=10)’);

Readln(N);

Writeln(’Введите количество столбцов массива (M<=10)’);

Readln(M);

For X:=1 to N do

For Y:=1 to M do Readln(Tab[X,Y]);

Writeln(’Вывод ’,N,’ строки’);

For X:=1 to M do Write(’Tab[’,N,’,’,X,’]=’,Tab[N,X],’ ’:2);

Writeln;

Writeln(’Вывод ’,M,’ столбца’);

For X:=1 to N do Writeln(’Tab[’,X,’,’,M,’]=’,Tab[X,M]);

Writeln(’Вывод массива’);

For X:=1 to N do

Begin

For Y:=1 to M do Write(’Tab[’,X,’,’,Y,’]=’,Tab[X,Y],’ ’:2);

Writeln;

End;

Задача 5.

Задан массив из строк, размерностьюN*M (N-строки, M-столбцы). Отсортировать все элементы массива по возрастанию.

Решение:

Program Mass5;

Var A:Array[1..10,1..10] of String;

I,N,M,X,Y:Integer;

P:String;

F:boolean;

Begin

{Ввести двумерный массив}

F:=False;

While F=False do

Begin

F:=True;

For X:=1 to N do

For Y:=1 to M-1 do

Begin

If A[X,Y]>A[X,Y+1] Then

Begin

{Поменять местами 2 соседних элемента строки}

End;

If (X<N)and(Y=(M-1))and(A[X,Y+1]>A[X+1,1])Then

Begin

P:=A[X,Y+1];

A[X,Y+1]:=A[X+1,1];

A[X+1,1]:=P;

F:=False;

End;

End;

End;

{Вывести отсортированный массив}

End.

Подпрограммы.

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

Нахождение максимального элемента массива - student2.ru Нахождение максимального элемента массива - student2.ru 1. T1 2.

       
  Нахождение максимального элемента массива - student2.ru   Нахождение максимального элемента массива - student2.ru
 

Нахождение максимального элемента массива - student2.ru РР РР

Нахождение максимального элемента массива - student2.ru Нахождение максимального элемента массива - student2.ru Т2

Нахождение максимального элемента массива - student2.ru Нахождение максимального элемента массива - student2.ru Т1

Нахождение максимального элемента массива - student2.ru Нахождение максимального элемента массива - student2.ru РР Т2

Нахождение максимального элемента массива - student2.ru Нахождение максимального элемента массива - student2.ru Т3 Т3

Нахождение максимального элемента массива - student2.ru Т4

Нахождение максимального элемента массива - student2.ru РР

Т4

При составлении программы по первому алгоритму приходится задавать одну и ту же группу операторов (РР) для каждого из повторяющихся фрагментов.

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

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

В Паскале подпрограммы реализуются 2-х видов - процедуры и функции. И те, и другие вводятся в программу с помощью описания. Для этого существует специальный раздел программы

Описание процедур

Структура описания процедур аналогична самой программе. Она состоит из заголовка процедуры и блока процедуры. Блок процедуры включает в себя те же 6 разделов, что и блок программы.

Заголовок процедуры:

Procedure Xxx[(P1:T1;P2:T2;…Pn:Tm)];

Xxx - имя процедуры (любой идентификатор);

P1,P2,…,Pn - формальные параметры;

T1,T2,…,Tm – типы формальных параметров

Формальные параметры – это перечень имен для обозначения исходных данных и результатов работы процедуры. Формальные параметры нужны для того, чтобы указать, куда должны быть подставлены фактические параметры при обращении к процедуре. Формальные параметры в программе не описываются.

Формальные параметры могут отсутствовать и, в этом случае, процедура описывается без параметров.

Обращение к процедуре:

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

Xxx[(B1,B2,…,Bn)];

B1,B2,…,Bn – список фактических параметров. Он отсутствует, если процедура описывалась без параметров.

При вызове процедуры устанавливается взаимное однозначное соответствие между фактическими и формальными параметрами, а затем управление передается процедуре.

Соответствие между фактическими и формальными параметрами:

1. Число фактических параметров должно быть равно числу формальных параметров;

2. Соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

Наши рекомендации