Получить матрицу 16 порядка из умножения двух матриц 4 порядка

Есть задание, как на фото:

Задание

Я смог перемножить матрицы, но мне не удается получить матрицу 1616 (чтобы и нули отображались). Алгоритм этого процесса (на примере матрицы 22) можно увидеть на скриншотах: введите сюда описание изображения

Я получаю матрицу в которой есть члены a11, a12 и тд. Как получить матрицу где есть и an, и нулевые члены?

Код:

extern crate rand;

use rand::Rng;
use std::mem;

fn main() {
    let mut rng = thread_rng();
 
    let mut A : [[i32; 4]; 4] = unsafe { mem::zeroed() };
    let mut B : [[i32; 4]; 4] = unsafe { mem::zeroed() };
    let mut E : [[i32; 4]; 4] = unsafe { mem::zeroed() };
    let mut res : [[i32; 16]; 16] = Default::default();

    print!("\nA=\n");
    for i in 0..A.len() {
        for j in 0..A.len() {
            A[i][j] = rng.gen_range(1..5);
            print!("{}\t", A[i][j]);
        }
        print!("\n");
    }

    print!("\nA^(-1)=\n");
    for i in 0..B.len() {
        for j in 0..B.len() {
            B[i][j] = rng.gen_range(1..5);
            print!("{}\t", B[i][j]);
        }
        print!("\n");
    }    

    print!("\nE=\n");
    for i in 0..E.len() {
        for j in 0..E.len() {
            if i == j {
                E[i][j] = 1;
            }
            print!("{}\t", E[i][j]);
        }
        print!("\n");
    }

    print!("\nResult matrix=\n");
    for row in 0..A.len() {
        for col in 0..A.len() {
            for inner in 0..A.len() {
                res[row][col] += A[row][inner] * B[inner][col];
            }
            print!("{}\t", res[row][col]);
        }
        print!("\n");
    }

}

Ответы (0 шт):