Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

·  Присвоим начальное значение переменной P=1;

·  Будем последовательно перебирать все строки I от 1-й до N-й, в каждой строке будем перебирать все столбцы J от 1-го до
M-го, для каждого элемента матрицы будем проверять условие: если aij¹0, то произведение P будем домножать на элемент aij (P=P*aij);

·  Выведем на экран значение произведения ненулевых элементов матрицы – P;

А теперь поговорим о процедурах.

Замечание (это важно!) Параметром процедуры может быть любая переменная предопределенного типа, это означает, что для передачи в процедуру массива в качестве параметра, тип его должен быть описан заранее. Например:

Type

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

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

procedure primer (a: matrix);

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

Вернемся теперь к нашим процедурам.

Процедура ввода матрицы называется vvod, параметром процедуры является матрица, причем она должна быть, как результат, передана в основную программу, следовательно, параметр должен передаваться по ссылке. Тогда заголовок нашей процедуры будет выглядеть так:

Procedure vvod(var m: matrix);

Для реализации вложенных циклов в процедуре нам потребуются локальные переменные-счетчики, например, k и h. Алгоритм заполнения матрицы уже обсуждался, поэтому не будем его повторять.

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

НЕ нашли? Не то? Что вы ищете?

Procedure print (m: matrix);

И вновь для реализации вложенных циклов внутри процедуры нам потребуются счетчики, пусть они называются так же – k и h. Алгоритм вывода матрицы на экран был описан выше, воспользуемся этим описанием.

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

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-мерного массива?

Лабораторная работа №6

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

Задание 1

Задание: Сформировать квадратную матрицу порядка n по заданному образцу:

Указания к выполнению: выполнить все этапы решения задачи самостоятельно. Вывод матрицы на экран оформить в виде процедуры.

Вариант 1.

1

2

3

...

n-1

N

N

n-1

n-2

...

2

1

1

2

3

...

n-1

N

N

n-1

n-2

...

2

1

...

...

...

...

...

N

n-1

n-2

...

2

1

Вариант 2.

0

0

0

...

0

1

0

0

0

...

2

0

...

...

...

...

...

...

0

0

n-2

...

0

0

0

n-1

0

...

0

0

n

0

0

...

0

0

Вариант 3.

n

0

0

...

0

0

0

n-1

0

...

0

0

0

0

n-2

...

0

0

...

...

...

...

...

...

0

0

0

...

2

0

0

0

0

...

0

1

Вариант 4.

1

n

1

n

...

N

2

n-1

2

n-1

...

n-1

3

n-2

3

n-2

...

n-2

...

...

...

...

...

...

n-1

2

n-1

2

...

2

n

1

n

1

...

1

Вариант 5.

1

1

1

...

1

1

0

1

1

...

1

0

0

0

1

...

0

0

...

...

...

...

...

...

0

1

1

...

1

0

1

1

1

...

1

1

Вариант 6.

1

1

1

...

1

1

2

2

2

...

2

0

3

3

3

...

0

0

...

...

...

...

...

...

n-1

n-1

0

...

0

0

n

0

0

...

0

0

Вариант 7.

1

2

3

...

n-1

N

2

3

4

...

n

0

3

4

5

...

0

0

...

...

...

...

...

...

n-1

N

0

...

0

0

n

0

0

...

0

0

Вариант 8.

1

0

0

...

0

N

0

2

0

...

n-1

0

0

0

3

...

0

0

...

...

...

...

...

...

0

2

0

...

n-1

0

1

0

0

...

0

N


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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5