Автор работы: Пользователь скрыл имя, 14 Января 2014 в 16:09, лабораторная работа
Цель работы:
1. Закрепить знания и навыки по работе с массивами.
2. Познакомиться с понятием сортировка массива, изучить различные алгоритмы сортировки ( сортировка методом прямого выбора и методом обмена).
3. Научиться находить элементы массива с заданными свойствами с помощью метода перебора.
4. Изучить и реализовать в виде программы алгоритм бинарного поиска. ( метод деления пополам, двоичного поиска ).
write(a[ij]/'); writeln;
end;
kol:=0;
for i:=l to n do
for j:=l to m do
if a[i,j]=l then kol:=kol+l;
writeln('Кол-во элем., равных 1, = !, kol);
End.
Ввод элементов в массив можно осуществить с клавиатуры, как это сделано выше, но массив можно задать и как константу. Посмотрите, что изменится в алгоритме, в этом случае:
program zadacha5_7a;
const n=3;m=4;
a: array[l..n, l..in] of integer = ( (1,2,-3,4),
Пример 2. Дана матрица действительных чисел размером 3x5. Вычислить сумму элементов матрицы.
PROGRAM EX_1;
CONST
n=3; {Количество строк}
m=5; {Количество столбцов}
TYPE
mas=array[1..n,1..m] of real;
VAR
b: mas; {Массив}
i: integer; {Индекс строки}
j: integer; {Индекс столбца}
s: real; {Сумма}
BEGIN
Writeln('Введите значения
for i:=1 to n do
for j:=1 to m do
readln(b[i,j]);
s:=0;
for i:=1 to n do
for j:=1 to m do
s:=s+b[i,j];
writeln('Сумма = ',s);
END.
Пример3. Дана матрица целых чисел размером 4x4. Заменить все элементы главной диагонали на нули. Вывести на экран монитора содержимое матрицы до обработки и после обработки.
PROGRAM EX_2;
VAR
matr: array[1..4,1..4] of integer; {Матрица}
i: integer;
j: integer;
BEGIN
for i:=1 to 4 do
for j:=1 to 4 do
begin
write('Введите элемент ',i,' ',j,' ');
readln matr[i,j];
end;
Writeln('Содержимое матрицы до обработки');
for i:=1 to 4 do begin
for j:=1 to 4 do
write(matr[i,j]:4);
writeln;
end;
for i:=1 to 4 do matr[i,i]:=0;
{Вывод содержимого матрицы после обработки}
Writeln('Содержимое обработанной матрицы ');
for i:=1 t0 4 do begin
for j:=1 to 4 do
write(matr[i,j]:4);
writeln; end;
END.
Пример 4. В матрице P(5, 6) поменять местами максимальный и минимальный элементы. Программа решения этой задачи содержится в следующем листинге.
program Swaping;
{Обмен местами max и min элементов матрицы}
uses
CRT;
const
N = 5; M = 6; {Количество строк и столбцов матрицы}
var
MatP : array [1..N, 1..M] of Integer; {Матрица}
Pmax, Pmin : Integer; {Значения max и min элементов}
Imax, Jmax, {Индексы max элемента}
Imin, Jmin, {Индексы min элемента}
i, j : Byte; {Параметры циклов}
begin {Swaping}
{Заполнение матрицы случайными числами и вывод по строкам}
Randomize; {Инициализация генератора случайных чисел}
ClrScr; Writeln;
Writeln (' ':4, 'Исходная матрица P');
for i := 1 to N do
begin
for j := 1 to M do
begin
MatP [i, j] := Random (50);
Write (' ', MatP [i, j]:3);
end; {for j}
Writeln;
end; {for i}
{Начальные значения max и min}
Pmax := MatP [1, 1]; Imax := 1; Jmax := 1;
Pmin := MatP [1, 1]; Imin := 1; Jmin := 1;
{Поиск max и min элементов матрицы}
for i := 1 to N do {Перебор строк}
for j := 1 to M do
begin {Перебор элементов строки}
if MatP [i, j] > Pmax then
begin {Запоминание max элемента и его индексов}
Pmax := MatP [i, j]; Imax := i; Jmax := j;
end; {if max}
if MatP [i, j] < Pmin then
begin {Запоминание min элемента и его индексов}
Pmin := MatP [i, j]; Imin := i; Jmin := j;
end; {if min}
end; {for j}
Writeln;
Writeln (' ':4, 'max: ', 'P [', Imax, ', ', Jmax, '] = ',
MatP [Imax, Jmax]:2);
Writeln (' ':4, 'min: ', 'P [', Imin, ', ', Jmin, '] = ',
MatP [Imin, jmin]:2);
{Обмен местами max и min элементов матрицы}
MatP [Imax, Jmax] := Pmin;
MatP [Imin, Jmin] := Pmax;
{Вывод измененной матрицы P по строкам}
Writeln;
Writeln (' ':3, 'Измененная матрица P');
for i := 1 to N do
begin {Перебор строк}
for j := 1 to M do {Перебор элементов строки}
Write (' ', MatP [i, j]:3);
Writeln;
end; {for i}
end. {Swaping}
Вначале во вложенных циклах по i и j происходит построчное заполнение элементов матрицы P. Априорно в качестве максимального и минимального элементов принимается элемент P [1,1]. Во вложенных циклах по i и j построчно перебираются и просматриваются элементы матрицы, при этом запоминаются наибольший и наименьший элементы среди просмотренных, а также номера строк и столбцов, в которых они расположены.
Далее на место максимального элемента записывается минимальный и наоборот.
Вывод измененной матрицы производится построчно аналогично заполнению.
Пример 5. Дана матрица A(3,4), и вектор B (4), состоящие из целых чисел . Умножить матрицу А на вектор В .program pr4-2 ;
const m=3; n=4;
var
a : array [ 1 .. m, 1 .. n ] of integer; (* описание матрицы *)
b : array [ 1 .. n ] of integer; (* описание вектора *)
c : array [ 1 .. m ] of integer; ( * описание С *)
i, j: integer;
begin
for i:=1 to m do (* ввод матрицы *)
begin
writeln (‘введите элементы ‘, i , ‘-той строки’);
for j:=1 to n do read (a [i, j] ); writeln;
end;
writeln (‘введите элементы вектора’);
for j:=1 to n do (* ввод вектора *)
read (b[ j]); writeln;
for i:=1 to m do
begin
c [ i ]:=0; for j:=1 to n do c[i] := c[ i ]+ a[i , j]* b[j];
end;
for i:=1 to m do (*форматный вывод матрицы *)
begin
for j:=1 to n do write (a [i, j]: 4 ); writeln;
end;
for j:=1 to n do write (b [ j ] :4); (* вывод массива B *)
writeln ;
for i:=1 to m do write (c [ i ] :4); (* вывод массива С *)
readln;
end.
В программе элементы матрицы вводятся по строкам по одному с подтверждением клавишей Enter. А выводятся в общепринятом виде: каждая строка матрицы с новой строки экрана (цикл i по строкам внешний, а цикл j – внутренний)
Пример 6. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.
Program Obmen;
Var N, I, J, Max,Ind, Vsp : Integer;A : Array [1..15, 1..15] Of Integer;
Begin
WRITE('Введите
количество элементов в
FOR I := 1 TO N DO
FOR J := 1 TO N DO
Begin
WRITE('A[', I, ',', J, '] '); READLN(A[I, J])
End;
FOR I := 1 TO N DO
Begin
Max := A[I, 1]; Ind := 1;
FOR J := 2 TO N DO
IF A[I, J] > Max THEN
Begin
Max := A[I, J]; Ind := J
End;
Vsp := A[I, I]; A[I, I] := A[I, Ind]; A[I, Ind] := Vsp
End;
FOR I := 1 TO N DO
Begin
WriteLn;
FOR J := 1 TO N Do Write(A[I, J] : 3);
End; WriteLn
End.
Пример 7. Заполнить матрицу порядка n по следующему образцу:
1 2 3 ... n-2 n-1 n
2 1 2 ... n-3 n-2 n-1
3 2 1 ... n-4 n-3 n-2
... ... ... ... ... ... ...
n-1 n-2 n-3 ... 2 1 2
n n-1 n-2 ... 3 2 1
Program Massiv12;
Var I, J, K, N : Integer;
A : Array [1..10, 1..10] Of Integer;
Begin
Write('Введите порядок матрицы: '); ReadLn(N);
For I := 1 To N Do
For J := I To N Do
Begin
A[I, J] := J - I + 1; A[J, I] := A[I, J];
End;
For I := 1 To N Do
Begin
WriteLn;
For J := 1 To N Do Write(A[I, J]:4);
End
End.
Пример 8. Дан двухмерный массив. Вычислить количество чётных элементов ниже главной и выше побочной диагоналей.
program zadacha5_9;
const n=4; a:array[l..n,l..n] of real = ((1, 2, 3, 4),
var i,j,kol:integer;
Begin
for i:=l to n do {Вывод элементов массива}
begin
for j:=1 to n do
write(a[i,j],''); writeln;
end;
kol:=0;
for i:=l to n do
for j := 1 to n do
if (i>j) and (i+j<n+l) and (a[i,j] mod 2 =0) then kol:=kol+l;
writeln('CyMMa эл. находящихся выше гл. диагонали =',s); End.
Индивидуальные задания
Задание
№1_Обработка и поиск в
Необходимо организовать ввод двумерного массива указанным способом, произвести обработку массива, организовать поиск в массиве.
№ вар. |
Размер массива |
Способ ввода |
Способ вывода |
Обработка массива |
Поиск |
1 |
3X5 вещественные |
Ввод с клавиатуры, описать в константах количество элементов |
Вывод массива осуществить в виде матрицы |
Сумма элементов второй строки |
Max в 1 строке |
2 |
2X4 целые |
Ввод с клавиатуры, описать в константах количество элементов |
Вывод массива осуществить в виде матрицы |
Произведение элементов третьего столбца |
Min во 2 столбце |
3 |
3X6 целые |
Ручной ввод с клавиатуры |
Вывод массива осуществить в виде матрицы |
Сумма положительных элементов |
Min в 5 строке |
4 |
2X5 целые |
Ручной ввод с клавиатуры |
Вывод массива осуществить в виде матрицы |
Сумма отрицательных элементов |
Min в 5 столбце |
5 |
2X4 целые |
Ручной ввод с клавиатуры |
Вывод массива осуществить в виде матрицы |
Подсчет количества четных элементов в первой строке |
max |
6 |
3X3 целые |
Датчик случайных чисел |
Вывод массива осуществить в виде матрицы |
Подсчет количества нечетных элементов |
min |
7 |
3X2 вещественные |
Присваиванием конкретных значений элементам массива |
Вывод массива осуществить в виде матрицы |
Произведение отрицательных элементов |
Max в 3 строке |
8 |
4X2 вещественные |
Датчик случайных чисел |
Вывод массива осуществить в виде матрицы |
Найти количество элементов равных 10 |
Элементов, равных нулю |
9 |
5X5 целые |
Датчик случайных чисел |
Вывод массива осуществить в виде матрицы |
Вывести все элементы третьего столбца |
Элементов, равных 10 |
10 |
6X2 целые |
Присваиванием конкретных значений элементам массива |
Вывод массива осуществить в виде матрицы |
Сумма положительных элементов |
Элементов, равных 100 |
11 |
3X3 вещественные |
Ручной ввод с клавиатуры |
Вывод массива осуществить в виде матрицы |
Найти количество отрицательных элементов |
Max в 3 столбце |
12 |
3X5 вещественные |
Датчик случайных чисел |
Вывод массива осуществить в виде матрицы |
Сумма отрицательных элементов |
Элементов, равных числу 5 |
13 |
7X7 целые |
Датчик случайных чисел |
Вывод массива осуществить в виде матрицы |
Подсчитать количество четных эдементов в массиве |
Элементов, равных числу 88 |
14 |
2X5 вещественные |
Ручной ввод с клавиатуры |
Вывод массива осуществить в виде матрицы |
Произведение элементов первого столбца |
Min в 3 строке |
15 |
3X3 целые |
Присваиванием конкретных значений элементам массива |
Вывод массива осуществить в виде матрицы |
Среднее арифметическое элементов массива |
Max во 2 столбце |
Задание №2_Действия с двумерными массивами
Информация о работе Организация поиска и сортировки в массивах