Вычислить элементы матрицы по формуле

Задача

Элементы матрицы NxM вычисляются по формуле A[i,j] = sin(N*i+M*j) при индексации с единицы или по формуле A[i,j] = sin(N*(i+1)+M*(j+1)) при индексации с нуля. Если полученный таким образом элемент матрицы отрицателен, то заменить его на 0. Вывести конечную матрицу на экран.

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

При заполнении матрицы каждый элемент вычисляется по заданной формуле. Если полученный таким образом элемент меньше нуля, то в соответствующую ему ячейку матрицы записывается 0.

В Python и Си требуется импортировать библиотеку с математическими функциями.

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

const N = 3; M = 4;
var
    mtx: array[1..N,1..M] of real;
    i,j: byte;
begin
    for i:=1 to N do begin
        for j:=1 to M do begin
            mtx[i,j] := sin(N*i+M*j);
            if mtx[i,j] < 0 then begin
                mtx[i,j] := 0;
                write(mtx[i,j]:7:0);
            end
            else
                write(mtx[i,j]:7:2);
        end;
        writeln;
    end;    
end.

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

   0.66      0   0.65   0.15
      0   0.99      0      0
   0.42      0   0.84      0

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

#include <stdio.h>
#include <math.h>
#define N 3
#define M 4
main() {
    float mtx[N][M];
    short i, j;
    srand(time(NULL));
 
    for (i=0; i<N; i++) {
        for (j=0; j<M; j++) {
            mtx[i][j] = sin(N * (i+1) + M * (j+1));
            if (mtx[i][j] < 0) {
                mtx[i][j] = 0;
                printf("%7.0f", mtx[i][j]);
            } else printf("%7.2f", mtx[i][j]);
        }
        printf("\n");
    }
}

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

При использовании gcc компилировать с опцией -lm.

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

from math import sin
N = 3
M = 4
mtx = []
for i in range(N):
    a = []
    for j in range(M):
        a.append(sin(N*(i+1) + M*(j+1)))
    mtx.append(a)
 
for i in range(N):
    for j in range(M):
        if mtx[i][j] < 0:
            mtx[i][j] = 0
            print("%7.0f" % mtx[i][j], end='')
        else:
            print("%7.2f" % mtx[i][j], end='')
    print()

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

алг
нач
  цел N = 3
  цел M = 4
  вещтаб mtx[1:N, 1:M]
  цел i, j
  нц для i от 1 до N
    нц для j от 1 до M
      mtx[i,j] := sin(N*i + M*j)
      если mtx[i,j] < 0 то
        mtx[i,j] := 0
        вывод int(mtx[i,j]):7
       иначе
        вывод mtx[i,j]:7:2
      все
    кц
    вывод нс
  кц
кон

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

N = 3
M = 4
dim mtx(N,M)
decimal 2
for i=0 to N-1
        for j=0 to M-1
                mtx[i,j] = sin(N*(i+1) + M*(j+1))
                if mtx[i,j] < 0 then
                        mtx[i,j] = 0
                endif
                print mtx[i,j] + "   ";
        next j
        print
next i

Тема

Матрицы

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

Простой

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