English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste exemplo, você aprenderá a multiplicar duas matrizes e a exibi-las usando funções definidas pelo usuário.
Para entender este exemplo, você deve entender o seguinteProgramação em CTema:
O programa pede ao usuário para inserir o tamanho da matriz (linha e coluna).
Em seguida, ele pede ao usuário para inserir os elementos dessas matrizes, finalmente adicionando e exibindo o resultado.
Para executar esta tarefa, é necessário executar três funções:
Para obter os elementos da matriz do usuário - enterData()
Multiplicar duas matrizes - multiplyMatrices()
Exibir a matriz resultante após a multiplicação - display()
#include <stdio.h> void enterData(int firstMatrix[][10], int secondMatrix[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond); void multiplyMatrices(int firstMatrix[][10], int secondMatrix[][10], int multResult[10], int rowFirst, int columnFirst, int rowSecond, int columnSecond); void display(int mult[][10], int rowFirst, int columnSecond); int main() { int firstMatrix[10]10], secondMatrix[10]10], mult[10]10], rowFirst, columnFirst, rowSecond, columnSecond, i, j, k; printf("Digite a linha e a coluna da primeira matriz: "); scanf("%d %d", &rowFirst, &columnFirst); printf("Digite a linha e a coluna da segunda matriz: "); scanf("%d %d", &rowSecond, &columnSecond); //Se a coluna da primeira matriz não for igual à linha da segunda matriz, peça ao usuário para inserir novamente o tamanho da matriz. while (columnFirst != rowSecond) { printf("Erro! A coluna da primeira matriz não é igual à linha da segunda.\n"); printf("Digite a linha e a coluna da primeira matriz: "); scanf("%d%d", &rowFirst, &columnFirst); printf("Digite a linha e a coluna da segunda matriz: "); scanf("%d%d", &rowSecond, &columnSecond); } //função de obtenção de dados de matriz enterData(firstMatrix, secondMatrix, rowFirst, columnFirst, rowSecond, columnSecond); //Função para multiplicar duas matrizes. multiplyMatrices(firstMatrix, secondMatrix, mult, rowFirst, columnFirst, rowSecond, columnSecond); //Função para exibir a matriz resultante da multiplicação. display(mult, rowFirst, columnSecond); return 0; } void enterData(int firstMatrix[][10], int secondMatrix[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond) { int i, j; printf("\nEntrar elementos da matriz:", 1:\n"); for(i = 0; i < rowFirst; ++i) { for(j = 0; j < columnFirst; ++j) { printf("Entrar elemento a%d%d: ", i + 1, j + 1; scanf("%d", &firstMatrix[i][j]); } } printf("\nEntrar elementos da matriz:", 2:\n"); for(i = 0; i < rowSecond; ++i) { for(j = 0; j < columnSecond; ++j) { printf("Entrar elemento b%d%d: ", i + 1, j + 1; scanf("%d", &secondMatrix[i][j]); } } } void multiplyMatrices(int firstMatrix[][10], int secondMatrix[][10], int mult[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond) { int i, j, k; //Inicializa os elementos da matriz mult com 0. for(i = 0; i < rowFirst; ++i) { for(j = 0; j < columnSecond; ++j) { mult[i][j] = 0; } } //Multiplica a matriz firstMatrix e a secondMatrix e armazena no array mult. for(i = 0; i < rowFirst; ++i) { for(j = 0; j < columnSecond; ++j) { for(k = 0; k < columnFirst; ++k) { mult[i][j] += firstMatrix[i][k] * secondMatrix[k][j]; } } } } void display(int mult[][10], int rowFirst, int columnSecond) { int i, j; printf("\nMatriz de saída:\n"); for(i = 0; i < rowFirst; ++i) { for(j = 0; j < columnSecond; ++j) { printf("%d ", mult[i][j]); if(j == columnSecond - 1)}} printf("\n\n"); } } }
Resultado de saída
Insira as linhas e colunas da primeira matriz: 3 2 Insira as linhas e colunas da segunda matriz: 3 2 Erro! As colunas da primeira matriz não são iguais às linhas da segunda matriz. Insira as linhas e colunas da primeira matriz: 2 3 Insira as linhas e colunas da segunda matriz: 3 2 Insira o elemento da matriz 1: Insira o elemento a11: 3 Insira o elemento a12: -2 Insira o elemento a13: 5 Insira o elemento a21: 3 Insira o elemento a22: 0 Insira o elemento a23: 4 Insira o elemento da matriz 2: Insira o elemento b11: 2 Insira o elemento b12: 3 Insira o elemento b21: -9 Insira o elemento b22: 0 Insira o elemento b31: 0 Insira o elemento b32: 4 Sair do matrix: 24 29 6 25