Текст программы

Program proizvedenie;

Type

Matrix=array [1..10, 1..10] of integer;

Var

A: matrix;

N, m, i, j: byte;

P: integer;

Procedure vvod (var m: matrix);

Var k, h: byte;

Begin

For i:=1 to n do {переменная n для процедуры является глобальной, а
значит «известной»}

For j:=1 to m do {переменная m для процедуры является глобальной, а
значит «известной»}

M[i,j]:= random(10);

End;

Procedure print (m: matrix);

Var k, h: byte;

Begin

For i:=1 to n do

begin

For j:=1 to m do

Write (M[i, j]: 4);

Writeln;

end;

End;

Begin {начало основной программы}

Writeln(‘Введите размерность матрицы:’);

Readln(N, M);

Vvod(a);

Print(a);

P:=1;

For i:=1 to N do

For j:=1 to M do

If a[i, j]<>0 then p:=p*a[i, j];

Writeln(p);

End.

Задача: даны две матрицы. Найти их сумму.

Решение задачи:

1. Для решения данной задачи нам потребуются переменные: a, b, c – матрицы одной размерности; i, j – индексы матриц; n, m – размерность матриц.

2. Входными данными являются переменные n и m, они могут принимать натуральные значения, их введем с клавиатуры; a, b – матрицы, ввод матриц оформим в виде процедуры.

3. Выходными данными в этой задаче является матрица c – сумма двух данных матриц. Вывод матриц на экран оформим в виде процедуры.

4. Ход решения задачи:

· введем размерность матриц n, m;

· введем матрицу a, для этого обратимся к процедуре vvod(a);

· напечатаем полученную матрицу, для этого обратимся к процедуре print(a);

· введем матрицу b, для этого обратимся к процедуре vvod(b);

· напечатаем полученную матрицу, для этого обратимся к процедуре print(b);

· Будем последовательно перебирать все строки I от 1-й до N-й, в каждой строке будем перебирать все столбцы J от 1-го до
M-го, каждый элемент матрицы cij будет равен сумме соответствующих элементов данных матриц, т.е. cij= aij + bij;

· напечатаем полученную матрицу, для этого обратимся к процедуре print(c);

Текст программы

Program summa;

Type

Matrix=array [1..10, 1..10] of integer;

Var

A, b, c: matrix;

N, m, i, j: byte;

Procedure vvod (var m: matrix);

Var k, h: byte;

Begin

For i:=1 to n do {переменная n для процедуры является глобальной, а
значит «известной»}

For j:=1 to m do {переменная m для процедуры является глобальной, а
значит «известной»}

M[i,j]:= random(10);

End;

Procedure print (m: matrix);

Var k, h: byte;

Begin

For i:=1 to n do

begin

For j:=1 to m do

Write (M[i, j]: 4);

Writeln;

End;

End;

Begin {начало основной программы}

Writeln(‘Введите размерность матрицы:’);

Readln(N, M);

Vvod(a); Print(a);

Writeln; {вставим пустую строку чтобы разделить вывод матриц}

Vvod(b); Print(b);

Writeln; {вставим пустую строку чтобы разделить вывод матриц}

For i:=1 to N do

For j:=1 to M do

C[i, j]:= a[i, j]+b[i, j];

Print(c);

End.

Вопросы для повторения

1. Что представляет собой двумерный массив?

2. Как в Паскале описывается двумерный массив?

3. Как осуществляется доступ к элементам двумерного массива?

4. Как осуществить ввод матрицы?

5. Как осуществить вывод матрицы на экран?

6. Есть следующее описание переменных:
var a,b: array [1..15, 0..8] of real; t: boolean;
Какие из указанных операций допустимы в Паскале?


· a:= b;
· a:=a+b;
· t:=a<>b;
· read(a);
· a[1]:=a[8];
· a[2,3]:=b[4,8]+b[1,1].


7. Какое из описаний вызовет ошибку "Structure too large" (структура превышает максимально допустимый объём статической памяти):

· Type Vector = Array[Byte] Of Integer; Var C: Array[1..10] Of Vector;

· Var K: Array [Byte, Byte] Of real;

· Var S: Array[–10000..10000] Of integer.

8. Можно ли в Паскале описать трехмерный массив? А n-мерный? Как это сделать? Как осуществляется доступ к элементам n-мерного массива?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: