English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico de Linguagem C

Controle de Fluxo de Linguagem C

Funções do C

Matrizes do C

Ponteiro do C

String do C

Estrutura de Linguagem C

Arquivo de Linguagem C

C Outros

Manual de referência do C

O programa C passa matrizes para funções para multiplicação

大全 de Programação do C

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:

  1. Para obter os elementos da matriz do usuário - enterData()

  2. Multiplicar duas matrizes -  multiplyMatrices()

  3. Exibir a matriz resultante após a multiplicação - display()

Exemplo: multiplicar matrizes passando-as para a função

#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

大全 de Programação do C