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

Tutorial di base del linguaggio C

Controllo del flusso del linguaggio C

Funzioni del linguaggio C

Array del linguaggio C

Puntatori del linguaggio C

Stringhe del linguaggio C

Struttura del linguaggio C

File del linguaggio C

Altro C

Manuale di riferimento del linguaggio C

Il programma C passa le matrici alla funzione per la moltiplicazione

Manuale completo di programmazione C

In questo esempio, imparerai a moltiplicare due matrici e a visualizzarle utilizzando funzioni definite dall'utente.

Per comprendere questo esempio, dovresti conoscere quanto segueProgrammazione in CArgomento:

Il programma richiede all'utente di inserire le dimensioni della matrice (righe e colonne).

Poi, chiede all'utente di inserire gli elementi di queste matrici e infine aggiunge e visualizza i risultati.

Per eseguire questa operazione, è necessario eseguire tre funzioni:

  1. Per ottenere gli elementi della matrice dall'utente - enterData()

  2. Moltiplicare due matrici - multiplyMatrices()

  3. Visualizzare la matrice di risultato dopo la moltiplicazione - display()

Esempio: moltiplicare le matrici passando alla funzione

#include <stdio.h>
void inserisciDati(int firstMatrix[][10], int secondMatrix[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond);
void moltiplicaMatrici(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("Inserisci le righe e le colonne della prima matrice: ");
	scanf("%d %d", &rowFirst, &columnFirst);
	printf("Inserisci le righe e le colonne della seconda matrice: ");
	scanf("%d %d", &rowSecond, &columnSecond);
	//Se le colonne della prima matrice non sono uguali alle righe della seconda matrice, richiedere all'utente di reinserire le dimensioni della matrice.
	while (columnFirst != rowSecond)
	{
		printf("Errore! Le colonne della prima matrice non sono uguali alle righe della seconda matrice.\n");
		printf("Inserisci le righe e le colonne della prima matrice: ");
		scanf("%d%d", &rowFirst, &columnFirst);
		printf("Inserisci le righe e le colonne della seconda matrice: ");
		scanf("%d%d", &rowSecond, &columnSecond);
	}
	//Funzione per ottenere i dati delle matrici
        enterData(firstMatrix, secondMatrix, rowFirst, columnFirst, rowSecond, columnSecond);
        //Funzione per moltiplicare due matrici.
        multiplyMatrices(firstMatrix, secondMatrix, mult, rowFirst, columnFirst, rowSecond, columnSecond);
        //Funzione per visualizzare la matrice risultante dopo la moltiplicazione
        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("\nInserisci gli elementi della matrice 1:\n");
	for(i = 0; i < rowFirst; ++i)
	{
		for(j = 0; j < columnFirst; ++j)
		{
			printf("Inserisci l'elemento a%d%d: ", i + 1, j + 1);
			scanf("%d", &firstMatrix[i][j]);
		}
	}
	printf("\nInserisci l'elemento della matrice 2:\n");
	for(i = 0; i < rowSecond; ++i)
	{
		for(j = 0; j < columnSecond; ++j)
		{
			printf("Inserisci l'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;
	//Inizializza gli elementi della matrice mult a 0.
	for(i = 0; i < rowFirst; ++i)
	{
		for(j = 0; j < columnSecond; ++j)
		{
			mult[i][j] = 0;
		}
	}
	//Moltiplica la matrice firstMatrix e secondMatrix e memorizza il risultato nell'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("\nOutput della matrice:\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");
		}
	}
}

Risultato di output

Inserisci le righe e le colonne della prima matrice: 3
2
Inserisci le righe e le colonne della seconda matrice: 3
2
Errore! Le colonne della prima matrice non sono uguali alle righe della seconda matrice.
Inserisci le righe e le colonne della prima matrice: 2
3
Inserisci le righe e le colonne della seconda matrice: 3
2
Inserisci l'elemento della matrice 1:
Inserisci l'elemento a11: 3
Inserisci l'elemento a12: -2
Inserisci l'elemento a13: 5
Inserisci l'elemento a21: 3
Inserisci l'elemento a22: 0
Inserisci l'elemento a23: 4
Inserisci l'elemento della matrice 2:
Inserisci l'elemento b11: 2
Inserisci l'elemento b12: 3
Inserisci l'elemento b21: -9
Inserisci l'elemento b22: 0
Inserisci l'elemento b31: 0
Inserisci l'elemento b32: 4
Output della matrice:
24  29
6  25

Manuale completo di programmazione C