Логотип сайта

Подготовка к ЕГЭ и ОГЭ

  • Главная
  • Информация о сайте
  • Сочинения ЕГЭ
  • Выпускное сочинение
  • Поиск по сайту

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

Категория: Язык программирования: Си/Си++
Скачать изображение

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


#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");
        }
  getchar();
 return 0;
}
Ответ на вопрос Перемножение матриц любого порядка. Язык Си
Похожие материалы
  • Сумма и умножение (Длинная арифметика) (Си/Си++)
  • Перевод из десятичной в двоичную (си/си++)
  • Напишите программу, печатающую значение EOF (Си)
  • Даны целые числа K и N (N > 0).Вывести N раз число K...
  • Определите, по какой из масок.. Подготовка к ЕГЭ (ИКТ)
  • Сколько единиц в двоичной записи десятичного числа 514?
  • Алгоритм вычисления значения функции F(n)... ИКТ (ЕГЭ)
  • 1
  • 2
  • 3
  • 4
  • 5
Оценка: 2.3 из 9

💬 Чат ЕГЭ В Telegram. Вступить

Copyright Vopvet.Ru © 2025 Хостинг от uWeb