Заполнение третьей матрицы по результатам сравнения элементов первых двух

Задача

Две равноразмерные матрицы (например, 4x3) заполняются вводом с клавиатуры. В ячейки третьей матрицы такой же размерности записывать бОльшие элементы из соответствующих ячеек первых двух матриц. Например, если во второй ячейке третьей строки первой матрицы находится число 89, а в ячейке с таким же индексом второй матрицы находится число 10, то в такую же ячейку третьей матрицы следует записать число 89.

Пояснение к задаче и алгоритм решения

Каждую из двух матриц следует заполнять в отдельном цикле. При заполнении третьей матрицы сравнивать ячейки с такими же адресами первых двух матриц и присваивать ячейке третьей матрицы наибольшее значение. В этом же цикле можно выводить третью матрицу на экран.

Исходный код на языке программирования Pascal

const
    M = 4;
    N = 3;
var
    a, b, c: array[1..N,1..M] of integer;
    i,j: byte;
begin
    writeln('Первая матрица: ');
    for i:=1 to N do
        for j:=1 to M do read(a[i,j]);
 
    writeln('Вторая матрица: ');
    for i:=1 to N do
        for j:=1 to M do read(b[i,j]);
 
    writeln('Результирующая матрица: ');
    for i:=1 to N do begin
        for j:=1 to M do begin
            if a[i,j] > b[i,j] then
                c[i,j] := a[i,j]
            else
                c[i,j] := b[i,j];
            write(c[i,j], ' ');
        end;
        writeln;
    end;
end.

Пример(ы) выполнения программы на языке Pascal

Первая матрица:
4 5 3 3
10 12 29 -1
-5 9 2 -5
Вторая матрица:
4 9 -2 2
3 7 4 -8
12 16 -1 3
Результирующая матрица:
4 9 3 3
10 12 29 -1
12 16 2 3

Исходный код на языке программирования C

#include <stdio.h>
#define M 4
#define N 3
main() {
    int a[N][M], b[N][M], c[N][M], i, j;
    printf("Первая матрица:\n");
    for (i=0; i<N; i++)
        for (j=0; j<M; j++)
            scanf("%d", &a[i][j]);
    printf("Вторая матрица:\n");
    for (i=0; i<N; i++)
        for (j=0; j<M; j++)
            scanf("%d", &b[i][j]);
    printf("Результирующая матрица:\n");
    for (i=0; i<N; i++) {
        for (j=0; j<M; j++) {
            if (a[i][j] > b[i][j]) c[i][j] = a[i][j];
            else c[i][j] = b[i][j];
            printf("%d ", c[i][j]);
        }
        printf("\n");
    }
}

Исходный код на языке программирования Python

M = 4
N = 3
a = []
for i in range(N):
    z = []
    for j in range(M):
        z.append(int(input()))
    a.append(z)
 
b = []
for i in range(N):
    z = []
    for j in range(M):
        z.append(int(input()))
    b.append(z)
 
c = b[0:]
for i in range(N):
    for j in range(M):
        if a[i][j] > b[i][j]:
            c[i][j] = a[i][j]
 
print("Первая матрица:")
for i in a:
    print(i)
print("Вторая матрица:")
for i in b:
    print(i)
print("Результирующая матрица:")
for i in c:
    print(i)

Особенности решения на языке программирования Python

В Питоне мы можем присвоить одну матрицу другой. Однако если это сделать напрямую (c = b), то просто установим две ссылки на один и тот же список. Поэтому список в данном случае копируется с помощью среза.

Поскольку матрица c оказывается такой же как b, то мы можем заменять на элементы a значения только в тех ячейках, которые меньше соответствующих в a.

Исходный код на языке программирования КуМир

алг заполнение третьей матрицы
нач
  цел N=3
  цел таб a[1:N,1:4], b[1:N,1:4], c[1:N,1:4]
  цел i, j
  вывод "Первая матрица:", нс
  нц для i от 1 до N
    ввод a[i,1], a[i,2], a[i,3], a[i,4]
  кц
  вывод "Вторая матрица:", нс
  нц для i от 1 до N
    ввод b[i,1], b[i,2], b[i,3], b[i,4]
  кц
  вывод "Результирующая матрица:", нс
  нц для i от 1 до N
    нц для j от 1 до 4
      если a[i,j] > b[i,j] то c[i,j] := a[i,j]
       иначе c[i,j] := b[i,j] все
      вывод c[i,j], " "
    кц
    вывод нс
  кц
кон

Исходный код на языке программирования Basic

M = 4
N = 3
dim a(N,M)
dim b(N,M)
dim c(N,M)
for i=0 to N-1
        for j=0 to M-1
                input a[i,j]
        next j
next i
for i=0 to N-1
        for j=0 to M-1
                input b[i,j]
        next j
next i
for i=0 to N-1
        for j=0 to M-1
                if a[i,j] > b[i,j] then
                        c[i,j] = a[i,j]
                else
                        c[i,j] = b[i,j]
                endif
        next j
next i
print "Первая матрица:"
for i=0 to N-1
        for j=0 to M-1
                print a[i,j] + " ";
        next j
        print
next i
print "Вторая матрица:"
for i=0 to N-1
        for j=0 to M-1
                print b[i,j] + " ";
        next j
        print
next i
print "Результирующая матрица:"
for i=0 to N-1
        for j=0 to M-1
                print c[i,j] + " ";
        next j
        print
next i

Тема

Матрицы

Уровень сложности

Простой

Дата публикации