English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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:
Per ottenere gli elementi della matrice dall'utente - enterData()
Moltiplicare due matrici - multiplyMatrices()
Visualizzare la matrice di risultato dopo la moltiplicazione - display()
#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