Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_tekhnologii_programmirovania(1).doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.4 Mб
Скачать
  1. Двумерные массивы

5.1. Примеры решения заданий

Задача 1. Даны действительные числа а1, ... ,аn, действительная квадратная матрица порядка n (n > 6). Получить действительную матрицу размера , вставив в исходную матрицу между пятым и шестым столбцами новый столбец с элементами а1, ... ,аn.

Решение: Фрагмент алгоритма решения задачи представлен на рис. 5.1.

Рис. 5.13. Фрагмент блок-схемы алгоритма решения задачи 1

Программа в Turbo Pascal будет иметь следующий вид:

Program ins_matrix;

Uses Crt;

Const n=10;

a: Array [l..n] of Real = _ (1,2,3,4,5,6,7,8,9,10);

Var x: Array [1..n, 1..n+1] of Real;

i:l..n; j:1..n+1;

Begin

For i:=l to n do

For j:=l to n do x [i,j]:=i/j;

For i:=1 to n do

Begin

For j:=n downto 6 do

x[i,j+1] :=x[i,j];

x[i,6]:=a[i];

End;

ClrScr;

For i:=l to n do

For j:=1 to n+1 do

Begin

If j=6

then TextColor(15)

Else TextColor(7);

GoToXY(j*6,i*2);

Write(x[i,j]:0:2)

End;

ReadLn;

End.

Задача 2. Создать алгоритм и написать программу для упорядочивания строк прямоугольной целочисленной матрицы размером 5х7 по возрастанию сумм их элементов.

Решение: Произведем упорядочивание методом прямого выбора. Алгоритм решения задачи представлен на рис. 5.2.

Рис. 5.14. Блок-схема алгоритма решения задачи 2

Программа в Turbo Pascal будет иметь следующий вид:

Program sort_matrix;

Uses crt;

Const

nrow = 5; ncol = 7;

Type

matr = array [1..nrow,1..ncol] of _ integer;

Var

a: matr;

sum: array [1..nrow] of longint;

i,j: integer; {номер минимального элемента}

nmin: integer;

{буфер для обмена значений строк матрицы}

b: integer;

{буфер для обмена значений массива сумм}

s: longint;

Begin

ClrScr; Randomize;

For i:=l to nrow do

For j:=1 to ncol do

Begin

a[i,j]:=Random(100);

GoToXY(j*4,i); Write(a[i,j])

End;

For i:=1 to nrow do

begin

sum[i]:=0;

For j:=1 to ncol do

sum[i]:=sum[i] + a[i,j];

End;

{ упорядочивание методом выбора }

For i:=1 to nrow-1 do

begin

nmin:=i;

For j:=i+1 to nrow do

If sum[j]<sum[nmin] then nmin:=j;

{обмен значений двух элементов массива сумм }

s:=sum[i];

sum[i]:=sum[nmin];

sum[nmin]:=s;

{ обмен значений двух строк матрицы }

For j:=1 to ncol do

begin

b:=a[i,j];

a[i,j]:=a[nmin,j];

a[nmin,j]:=b;

End;

End;

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

For i:=l to nrow do

For j:=1 to ncol do

Begin

GoToXY(j*4,i);

Write(a[i,j])

End;

Задача 3. Дана действительная квадратная матрица порядка 9. Вычислить сумму тех ее элементов, расположенных на главной диагонали и выше нее, которые превосходят по величине все элементы, расположенные ниже главной диагонали.

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

Программа в Turbo Pascal будет иметь следующий вид:

Program max_diag;

Uses Crt;

Var a: Array [1..9,1..9] of Real;

max,sum: Real;

i,j: 1..9;

Begin

ClrScr; Randomize;

For i:=l to 9 do

For j:=1 to 9 do

begin

a[i,j]:=Random*100;

If j<i

then TextColor(11)

Else TextColor(15);

GotoXY(j*7,i*2);

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

End;

max:=a[2,1];

For i:=3 to 9 do

For j:=l to i-1 do

If a[i,j]>max

then max:=a[i,j];

sum:=0;

For i:=l to 9 do

For j:=i to 9 do

If a[i,j]>max

then sum:=sum+a[i,j]; If sum=0

then

Write('Указанных элементов нет':220)

Else

Write('Искомая сумма равна':210,sum);

ReadLn;

End.

Рис. 5.15. Блок-схема алгоритма решения задачи 3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]