English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
大全 de exemplos de programação do C
Neste exemplo, você aprenderá a multiplicar duas matrizes e a exibir usando funções definidas pelo usuário.
Para entender este exemplo, você deve saber o seguinteProgramação em CTema:
O programa requer que o usuário insira o tamanho das duas matrizes (linhas e colunas).
Para multiplicar duas matrizes,a quantidade de colunas da primeira matriz deve ser igual ao número de linhas da segunda matriz.
O programa a seguir requer o número de linhas e colunas de duas matrizes, até que sejam atendidas as condições acima.
Em seguida, execute a multiplicação de duas matrizes e o resultado é exibido na tela.
Para isso, criamos três funções:
enterData() - Obter elementos da matriz do usuário.
multiplyMatrices() - Multiplicar duas matrizes.
display(); - Exibir a matriz resultante após a multiplicação.
#include <stdio.h> void enterData(int first[10], int second[10], int r1, int c1, int r2, int c2); void multiplyMatrices(int first[10], int second[10], int multResult[10], int r1, int c1, int r2, int c2); void display(int mult[][10], int r1, int c2); int main() { int first[10][10], second[10][10], mult[10][10], r1, c1, r2, c2; printf("Insira as linhas e colunas da primeira matriz: "); scanf("%d %d", &r1, &c1); printf("Insira as linhas e colunas da segunda matriz: "); scanf("%d %d", &r2, &c2); //Realizar a entrada até que a coluna da primeira matriz seja igual à linha da segunda matriz while (c1 != r2) { printf("Erro! Insira novamente as linhas e colunas.\n"); printf("Insira as linhas e colunas da primeira matriz: "); scanf("%d%d", &r1, &c1); printf("Insira as linhas e colunas da segunda matriz: "); scanf("%d%d", &r2, &c2); } //Função para obter os dados da matriz enterData(first, second, r1, c1, r2, c2); //Função para multiplicar duas matrizes. multiplyMatrices(first, second, mult, r1, c1, r2, c2); //Função para exibir a matriz resultante da multiplicação. display(mult, r1, c2); return 0; } void enterData(int first[10], int second[10], int r1, int c1, int r2, int c2) { printf("\nInsira os elementos da matriz:\n"); 1:\n"); for (int i = 0; i < r1; ++i) { for (int j = 0; j < c1; ++j) { printf("Entre a%d%d: ", i + 1, j + 1); scanf("%d", &first[i][j]); } } printf("\nInsira os elementos da matriz:\n"); 2:\n"); for (int i = 0; i < r2; ++i) { for (int j = 0; j < c2; ++j) { printf("Entre b%d%d: ", i + 1, j + 1); scanf("%d", &second[i][j]); } } } void multiplyMatrices(int first[10], int second[10], int mult[10], int r1, int c1, int r2, int c2) { // Os elementos iniciais da matriz são muitas vezes 0. for (int i = 0; i < r1; ++i) { for (int j = 0; j < c2; ++j) { mult[i][j] = 0; } } // Multiplicar a primeira e a segunda matriz e armazenar no mult. for (int i = 0; i < r1; ++i) { for (int j = 0; j < c2; ++j) { for (int k = 0; k < c1; ++k) { mult[i][j] += first[i][k] * second[k][j]; } } } } void display(int mult[][10], int r1, int c2) { printf("\nSaída da matriz:\n"); for (int i = 0; i < r1; ++i) { for (int j = 0; j < c2; ++j) { printf("%d ", mult[i][j]); if (j == c2 - 1) printf("\n"); } } }
Saída do resultado
Entrar linha e coluna da primeira matriz: 2 3 Entrar linha e coluna da segunda matriz: 3 2 Entrar elementos da matriz 1: Enter a11: 3 Enter a12: -2 Enter a13: 5 Enter a21: 3 Enter a22: 0 Enter a23: 4 Entrar elementos da matriz 2: Enter b11: 2 Enter b12: 3 Enter b21: -9 Enter b22: 0 Enter b31: 0 Enter b32: 4 Saída da matriz: 24 29 6 25