ВВЕРХ
ВНИЗ
  • Home
  • Matrix
  • Matrix 17 - 22

Matrix 17 - 22

На предыдущей странице было несколько задач из решебника Абрамяна, посвященных выводу элементов матрицы в различном порядке. Здесь же мы займемься анализом элементов. Все матрицы являются целочисленными, а формирование матрицы случайное - с помощью датчика random.

Matrix17. Дана матрица размера M × N и целое число K (1 ≤ K ≤ M). Найти сумму и произведение элементов K-й строки данной матрицы.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
var
  A: array[1..10, 1..10] of integer;
  i, j, M, N, K: byte;
  S, P: integer;

begin
  write('M = ');
  readln(M);
  write('N = ');
  readln(N);
  { Вводим номер строки: }
  repeat
    write('K = ');
    readln(K)
  until (K >= 1) and (K <= M);
  S := 0; { Начальная сумма }
  P := 1; { Начальное произведение }
  randomize;
  for i := 1 to M do begin
    for j := 1 to N do begin
      a[i, j] := random(10);
      write(a[i, j]:3);
      if i = K then begin
        S := S + a[i, j]; { Изменяем сумму }
        P := P * a[i, j]  { Изменяем произведение }
      end
    end;
    writeln
  end;
  writeln;
  writeln('Сумма элементов ', K, '-й строки: ', S);
  writeln('Произведение элементов ', K, '-й строки: ', P);
  readln
end.

Matrix18. Дана матрица размера M × N и целое число K (1 ≤ K ≤ N). Найти сумму и произведение элементов K-го столбца данной матрицы.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
var
  A: array[1..10, 1..10] of integer;
  i, j, M, N, K: byte;
  S, P: integer;

begin
  write('M = ');
  readln(M);
  write('N = ');
  readln(N);
  { Вводим номер столбца: }
  repeat
    write('K = ');
    readln(K)
  until (K >= 1) and (K <= N);
  S := 0; { Начальная сумма }
  P := 1; { Начальное произведение }
  randomize;
  writeln('Случайная матрица ', M, 'x', N, ':');
  for i := 1 to M do begin
    for j := 1 to N do begin
      a[i, j] := -10 + random(20);
      write(a[i, j]:3);
      if j = K then begin
        S := S + a[i, j]; { Изменяем сумму }
        P := P * a[i, j]  { Изменяем произведение }
      end
    end;
    writeln
  end;
  writeln;
  writeln('Сумма элементов ', K, '-го столбца: ', S);
  writeln('Произведение элементов ', K, '-го столбца: ', P);
  readln
end.

Matrix19. Дана матрица размера M × N. Для каждой строки матрицы найти сумму ее элементов.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
var
  A: array[1..10, 1..10] of integer;
  i, j, M, N: byte;
  S: integer;

begin
  write('M = ');
  readln(M);
  write('N = ');
  readln(N);
  randomize;
  writeln('Случайная матрица ', M, 'x', N, ':');
  for i := 1 to M do begin
    S := 0; { Сумма в начале строки }
    for j := 1 to N do begin
      a[i, j] :=  - 100 + random(200);
      write(a[i, j]:4);
      S := S + a[i, j]; { Увеличиваем сумму }
    end;
    writeln('Сумма: ':15, S) { Выводим сумму в конце строки }
  end;
  writeln;
  readln
end.

Matrix20. Дана матрица размера M × N. Для каждого столбца матрицы найти произведение его элементов.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
var
  A: array[1..10, 1..10] of integer;
  i, j, M, N: byte;
  S: integer;

begin
  write('M = ');
  readln(M);
  write('N = ');
  readln(N);
  randomize;
  { Формируем и выводим матрицу: }
  writeln('Случайная матрица ', M, 'x', N, ':');
  for i := 1 to M do begin
    for j := 1 to N do begin
      a[i, j] :=  - 10 + random(20);
      write(a[i, j]:4)
    end;
    writeln
  end;
  writeln;
  writeln('Вычисляем произведение в каждом столбце:');
  for j := 1 to N do begin { <-- внешний цикл по столбцам }
    S := 1; { Произведение в начале столбца }
    for i := 1 to M do { <-- внутренний цикл по строкам }
      S := S * a[i, j]; { Произведение в j-м столбце }
    { Выводим произведение в конце столбца }
    writeln(j, ') Произведение = ', S)
  end;
  readln
end.

Matrix21. Дана матрица размера M × N. Для каждой строки матрицы с нечетным номером (1, 3, …) найти среднее арифметическое ее элементов. Условный оператор не использовать.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
var
  A: array[1..10, 1..10] of integer;
  i, j, M, N: byte;
  S: real;

begin
  write('M = ');
  readln(M);
  write('N = ');
  readln(N);
  randomize;
  { Формируем и выводим матрицу: }
  writeln('Случайная матрица ', M, 'x', N, ':');
  for i := 1 to M do 
  begin
    for j := 1 to N do 
    begin
      a[i, j] :=  - 100 + random(200);
      write(a[i, j]:4)
    end;
    writeln
  end;
  writeln;
  writeln('Среднее арифметическое в нечетных строках:');
  i := 1;
  while i <= M do 
  begin
    S := 0;  { Сумма элементов в начале строки }
    for j := 1 to N do
      S := S + a[i, j]; { Увеличиваем сумму в i-й строке }
    S := S / N; { Среднее арифметическое элементов i-й строки }
    writeln(i, ') Среднее арифметическое = ', S:0:3);
    i := i + 2 { Переходим на следующую нечетную строку }
  end;
  readln
end.

Matrix22. Дана матрица размера M × N. Для каждого столбца матрицы с четным номером (2, 4, …) найти сумму его элементов. Условный оператор не использовать.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
var
  A: array[1..10, 1..10] of integer;
  i, j, M, N: byte;
  S: integer;

begin
  write('M = ');
  readln(M);
  write('N = ');
  readln(N);
  randomize;
  { Формируем и выводим матрицу: }
  writeln('Случайная матрица ', M, 'x', N, ':');
  for i := 1 to M do begin
    for j := 1 to N do begin
      a[i, j] := - 100 + random(200);
      write(a[i, j]:4)
    end;
    writeln
  end;
  writeln;
  writeln('Вычисляем сумму в четных столбцах:');
  j := 2;
  while j <= N do begin { <-- внешний цикл по столбцам }
    S := 0; { Сумма в начале столбца }
    for i := 1 to M do { <-- внутренний цикл по строкам }
      S := S + a[i, j]; { Увеличиваем сумму в j-м столбце }
    writeln(j, ') Сумма = ', S); { Выводим сумму в конце столбца }
    j := j + 2 { Следующий четный номер }
  end;
  readln
end.


Яндекс.Метрика