Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
33
Добавлен:
04.06.2015
Размер:
7.33 Mб
Скачать

Var I, j, k, i_max, j_min : Word;

min, max : Integer;

Massiv : Array [1..n, 1..m] Of Integer;

Begin

ClrScr;

Randomize;

For i:=1 To n Do

For j:=1 To m Do

Massiv[i, j]:= Random(mass_max – mass_min + 1) + mass_min;

WriteLn(‘Исходный массив:’);

For i:=1 To n Do

Begin

For j:=1 To m Do

Write(Massiv[i, j]:5);

WriteLn;

End;

WriteLn;

For i:=1 To n Do перебираем строки массива

Begin

min:= Massiv[i,1];

j_min:= 1; номер столбца с минимальным элементом в этой строке

For j:=2 To m Do

If (Massiv[i,j] < min) Then

Begin

min:= Massiv[i,j];

j_min:= j;

End;

max:= Massiv[1, j_min]; ищем максимальный элемент в столбце,

i_max:= 1; содержащем минимальный элемент этой строки

For k:=2 To n Do

If (Massiv[k,j_min] > max) Then

Begin

max:= Massiv[k,j_min];

i_max:= k;

End;

If (i = i_max) Then

Begin

WriteLn(‘Номер строки=’,i,

Номер столбца=’,j_min,

Седловая точка=’, Massiv[i, j_min]);

Break;

End;

End; конец цикла по строкам

ReadLn;

End.

17.Задать элементы целочисленного квадратного массиваannслучайными числами, лежащими в диапазоне отmass_minдоmass_max. Исходный массив вывести на экран построчно. Заполнить векторvk суммами элементов исходного массива, расположенных параллельнопобочнойдиагонали(k = 2n – 1).

Для решения этой задачи рассмотрим исходный массив поэлементно:

a11 a12 a13 a14 . . . a1n

a21 a22 a23 a24 . . . a2n

a31 a32 a33 a34 . . . a3n

. . . . . . . . . . . . .

an1 an2 an3 an4 . . . ann

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

v1 = a11 сумма индексов элемента 1 + 1 = 2

v2 = a21 + a12 сумма индексов элементов 1 + 2 = 3

v2 = a31 + a22 + a13 сумма индексов элементов 1 + 3 = 4

. . . . . . . . .

v2n-1 = ann сумма индексов элемента n + n = 2n

Таким образом, сумма индексов элементов массива, входящих в сумму элементов, на единицу меньше индекса соответствующего элемента вектора:

Program Primer_17;

Uses WinCrt;

Const n = 5;

k = 2*n - 1;

mass_min = -50;

mass_max = 50;

Var I, j, t : Integer;

Vector : Array [1..K] Of Integer;

a : Array [1..n, 1..n] Of Integer;

Begin

ClrScr;

Randomize;

For i:=1 To n Do

For j:=1 To n Do

a[i, j]:= Random(mass_max – mass_min + 1) + mass_min;

WriteLn;

WriteLn(‘Исходный массив:’);

For i:=1 To n Do

Begin

For j:=1 To n Do

Write(a[i, j]:5);

WriteLn;

End;

WriteLn;

For i:=1 To k Do обнуляем выходной вектор

vector [i]:= 0;

For i:=1 To n Do

For j:=1 To n Do

Begin

t:= i + j - 1; определяем индекс элемента вектора

vector[t]:= vector[t] + a[i,j]; вычисляем сумму элементов массива

End;

WriteLn;

WriteLn(‘Полученный вектор’);

WriteLn;

For i:=1 To k Do

Write(vector[i]:5);

WriteLn;

ReadLn;

End.

18.Задать элементы целочисленного квадратного массиваannслучайными числами, лежащими в диапазоне отmass_minдоmass_max. Исходный массив вывести на экран построчно. Заполнить векторvk суммами элементов исходного массива, расположенных параллельноглавнойдиагонали(k = 2n – 1).

Для решения этой задачи рассмотрим исходный массив поэлементно:

a11 a12 a13 a14 . . . a1n

a21 a22 a23 a24 . . . a2n

a31 a32 a33 a34 . . . a3n

. . . . . . . . . . . . .

an1 an2 an3 an4 . . . ann

Заменим элементы исходного массива элементами вычисляемого вектора:

vn vn-1 vn-2 vn-3 . . . v2 v1

vn+1 vn vn-1 vn-2 . . . v3 v2

vn+2 vn-1 vn vn-2 . . . v4 v3

. . . . . . . . . . . . . . . .

V2n-1 v2n-2 v2n-3 v2n-4 . . . vn+1 vn

Алгоритм очевиден:

Program Primer_18;

Uses WinCrt;

Const n = 5;

k = 2*n - 1;

mass_min = -50;

mass_max = 50;