Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
questo codice "dovrebbe" calcolare il prodotto di due matrici, ma dopo la carica delle matrici, il programma esce con l'errore di segmention fault. come risolverlo?
se non ti e' chiaro cosa fa questo codice, semplicemente allora uno spazio in memoria per ogni matrice abbastanza grande da contenere n-elementi (dove n e' il prodotto rpm*cpm quindi il numero di elementi della matrice, moltiplicato per il numero di byte che occupa in memoria un double: sizeof(double) )
percui il tuo codice diventa cosi:
Codice sorgente - presumibilmente C++
#include <stdio.h>
int main()
{
int rpm,cpm,rsm,csm;
printf("Inserisci le righe della prima matrice\n");
scanf("%d",&rpm);
printf("Inserisci le colonne della prima matrice\n");
scanf("%d",&cpm);
printf("Inserisci le righe della seconda matrice\n");
scanf("%d",&rsm);
printf("Inserisci le colonne della seconda matrice\n");
free(pm);//Libero la memoria allocata precedentemente
free(sm);
free(mr);
free(mp);
}//else
return0;
}
non ho controllato l'algoritmo di moltiplicazione delle matrici, mi sono solo limitato a correggere gli errori che ti ho detto (inoltre la riga 34 e la riga 37 erano sbagliate perche' creavano dei cicli infiniti)
per lo meno ora non dovrebbe piu' andare in segmentation fault
Carl ora da una marea di errori : "error: subscripted value is neither array nor pointer nor vector"
Ecco i pnti dove da errore : (32,35) (41,35) (56,29) (56,38) (62,21) (70,28) e poi ci sono alcuni warning quando uso gli scanf
Carl ora da una marea di errori : "error: subscripted value is neither array nor pointer nor vector"
Ecco i pnti dove da errore : (32,35) (41,35) (56,29) (56,38) (62,21) (70,28) e poi ci sono alcuni warning quando uso gli scanf
beh si perche' dichiarando le matrici in quella maniera non hai piu' un vettore bidimensionale [righe][colonne], ma solamente un array [righe*colonne],
quindi o dichiari come vettore bidimensionale (ti consiglio sempre dinamicamente cosi' il tuo codice e' portabile su tutti i compilatori senza modifiche) oppure quando devi prelevare un elemento riga-colonna dalla matrice, vai a prelevare l'elemento corrispondente sull'array che e' dato da riga*numero_totale_righe + colonna;
mp ha lunghezza cpm, ma poi iteri per csm... e incrementi i invece di j.
gia!! per evitare questi errori ti consiglio una nomenclatura delle variabili piu' autoesplicativa tipo anziche' pm o sm, magari matrice1,matrice2,matriceRisulato ecc ecc