Главная » Перемножение матриц любого порядка. Язык Си
12:39

Перемножение матриц любого порядка. Язык Си


Картинка Перемножение матриц любого порядка. Язык Си для мобильных телефонов

Перемножение двух матриц на языке Си с динамическим выделением памяти. Проверено для матриц порядка 500x500 и менее. Элементы для проверки задавались по формуле, матрицы заполнялись компьютером. По умолчанию матрицы нужно заполнять вручную. Код компилировать чистым проектом под Си.


Код на си (Visual Studio)


#include "stdio.h"
#include "malloc.h"
#include "locale.h"

int main (int argc, char* argv[])
{    
    int** matrixA, **matrixB, **matrixAB;
    int rowA, colA,rowB,colB, i,j,k;
    setlocale(LC_ALL, "russian_russia.1251");
    printf("Введите количество строк матрицы A: ");
    scanf_s("%d",&rowA);
    printf("Введите количество столбцов матрицы A: ");
    scanf_s("%d",&colA);

    printf("\nВведите количество строк матрицы B: ");
    scanf_s("%d",&rowB);
    printf("Введите количество столбцов матрицы B: ");
    scanf_s("%d",&colB);
    if(colA!=rowB)
    {
        printf("\nНевозможно перемножить матрицы\n");
        return 0;
    }
    matrixA = (int**) malloc(rowA * sizeof(int*));
    for (i = 0; i<rowA;i++)
    {
        matrixA[i] = (int*)malloc(colA*sizeof(int));
    }

    matrixB = (int**) malloc(rowB * sizeof(int*));
    for (i = 0; i<rowB;i++)
    {
        matrixB[i] = (int*)malloc(colB*sizeof(int));
    }
    matrixAB = (int**) malloc(rowA * sizeof(int*));
    for (i = 0; i<rowA;i++)
    {
        matrixAB[i] = (int*)malloc(colB*sizeof(int));
    }
    
    for (i = 0; i < rowA; ++i)
    {
        for (j = 0; j < colB; ++j)
        {
            for (k = 0; k < colA; ++k)
            {
                matrixA[i][k] = 0;
                matrixB[k][j] = 0;
                matrixAB[i][j] = 0;
            }
        }
    }

    printf("\nВведите матрицу A\n");
    for (i = 0; i<rowA;i++)
    {
        for (j = 0; j<colA; j++)
        {
            printf("matrixA[%d][%d] = ",i,j);
            scanf_s("%d",&matrixA[i][j]);
        }
        
    }
    printf("\nВведите матрицу B\n");
    for (i = 0; i<rowB;i++)
    {
        for (j = 0; j<colB; j++)
        {
            printf("matrixB[%d][%d] = ",i,j);
            scanf_s("%d",&matrixB[i][j]);
        }
    }

    for (i = 0; i < rowA; ++i)
        for (j = 0; j < colB; ++j)
            for (k = 0; k < colA; ++k)
                matrixAB[i][j] += matrixA[i][k] * matrixB[k][j];
        printf("\n");
        for (i = 0; i<rowA;i++)
        {
            for (j = 0; j<colB; j++)
            {
                printf("%d  ",matrixAB[i][j]);
            }
            printf("\n");
        }

        return 0;
}


Ответ на вопрос Перемножение матриц любого порядка. Язык Си

Похожие материалы:
Нашли ошибку на сайте? Напишите в комментариях!
Категория: Язык программирования: Си/Си++ | Просмотров: 149 | Добавил: Ученик | Рейтинг: 5.0/1