Salve a tutti, ho scritto questo codice ma se inserisco 1 non immette correttamente la matrice e in più continua a darmi errore se non differenzio i nomi come immissione 1 da immissione 2. Ringrazio in anticipo chi vorrà aiutarmi.
/* menu di matrici*/
#include <stdio.h>
#include <windows.h>
#define maxele 10
#define N maxele
#define P maxele
#define M maxele
void gestioneSequenza (void);
void immissioneMatrici ( int, int, int[maxele][maxele]);
void prodottoMatrici (int, int, int, int[maxele][maxele], int[maxele][maxele], int[maxele][maxele]);
void visualizzazione (int, int,int[maxele][maxele]);
main()
{
int mat1[N][P]; /* prima matrice */
int mat2[P][M]; /* seconda matrice */
int pmat[N][M]; /* matrice prodotto */
int n, m, p;
char invio;
do {
printf("\nNumero di righe prima matrice: ");
scanf("%d", &n);
}
while (n < 1 || n > maxele);
do {
printf("\nNumero di colonne prima matrice / righe della seconda: ");
scanf("%d", &p);
}
while (p < 1 || p > maxele);
do {
printf("\nNumero di colonne della seconda matrice: ");
scanf("%d", &m);
}
while (m < 1 || m > maxele);
gestioneSequenza();
immissioneMatrici(n, p, mat1);
immissioneMatrici(p, m, mat2);
prodottoMatrici(n, m, p, mat1, mat2, pmat);
visualizzazione(n, p, mat1);
visualizzazione(p, m, mat2);
visualizzazione(n, m, pmat);
printf("\n\n Premere Invio per continuare...");
scanf("%c", &invio);
scanf("%c", &invio);
system("pause");
}
void gestioneSequenza()
{
int array[maxele][maxele];
int n;
int scelta = -1;
char invio;
while (scelta!=0){
printf("\n");
printf("\t GESTIONE SEQUENZA");
printf("\n\t 1.ImmissioneMatrici");
printf("\n\t 2.ProdottoMatrici");
printf("\n\t 3.Visualizzazione");
printf("\n\t 0.Fine");
printf("\n\t Scegliere un'opzione: ");
scanf("%d", &scelta);
scanf("%c", &invio);
switch (scelta) {
case 1: immissioneMatrici(n, n, array);
break;
case 2: prodottoMatrici(n, n, n, array, array, array);
break;
case 3: visualizzazione(n,n, array);
break;
}
}
}
void immissioneMatrici (int n, int p, int mat1[maxele][maxele])
{
int i, j;
printf("\n Caricamento prima matrice\n");
for (i=0; i<n; i++)
for(j=0; j<p; j++) {
printf("Inserisci riga %d colonna %d valori: ", i,j);
scanf("%d", &mat1[i][j]);
};
}
void immissioneMatrici2 (int p, int m, int mat2[maxele][maxele])
{
int i, j;
printf("\n Caricamento seconda matrice\n");
for (i=0; i<p; i++)
for(j=0; j<m; j++) {
printf("Inserisci riga %d colonna %d: ", i, j);
scanf("%d", &mat2[i][j]);
};
}
void prodottoMatrici( int n, int m, int p, int mat1[maxele][maxele], int mat2[maxele][maxele], int pmat[maxele][maxele])
{
int j=0, i=0, k=0;
for(i=0; i<n; i++)
for(j=0; j<n; j++){
pmat[i][j] = 0;
for(k=0; k<p; k++)
pmat[i][j] = pmat[i][j] + mat1[i][k] * mat2[k][j];
};
}
void visualizzazione2(int righe, int colonne, int mat1[maxele][maxele])
{
int i, j;
printf("\n \n VISUALIZZA PRIMA MATRICE \n ");
for(i=0; i<righe; i++) {
printf("\n");
for(j=0; j<colonne; j++)
printf("%5d", mat1[i][j]);
};
}
void visualizzazione1(int righe, int colonne, int mat2[maxele][maxele])
{
int i, j;
printf("\n \n VISUALIZZA SECONDA MATRICE \n ");
for(i=0; i<righe; i++) {
printf("\n");
for(j=0; j<colonne; j++)
printf("%5d", mat2[i][j]);
};
}
void visualizzazione(int righe, int colonne, int pmat[maxele][maxele])
{
int i, j;
printf("\n \n VISUALIZZA MATRICE PRODOTTO \n ");
for(i=0; i<righe; i++) {
printf("\n");
for(j=0; j<colonne; j++)
printf("%5d", pmat[i][j]);
};
}