Questo è il main :
e questa è la funzione che uso per allocare in memoria la matrice :codice:int main() { int *m_in, *m_out, n, r, c, dominant; FILE *fpin, *fpout; fpin = ApriFile("r"); fscanf(fpin, "%d %d %d", &r,&c, &dominant); m_in = AllocateMemory(3, r*c); n = Leggi_Matrice(fpin, m_in); fclose(fpin); m_out = AllocateMemory(r, c); Trasforma_Matrice(m_in, m_out, n, r, c, dominant); fpout = ApriFile("w"); Stampa_Matrice(fpout, m_out, r, c); fclose(fpout); return EXIT_SUCCESS; }
Ho dato per scontato che sia giusto perché sia il main sia la funzione AllocateMemory sono state scritte dal mio professore. Pensandoci bene però quel "AllocateMemory(3, r*c)", in particolare il "3" non so come possa servire in termini di allocazione di memoria :|codice:int *AllocateMemory(int r, int c) { int *m; if (m = (int *)malloc(sizeof(int)*r*c) != NULL) return m; else { printf("Bad memory allocation\n"); exit (EXIT_FAILURE); } }
P.S.: i parametri r,c sono nella prima riga del FILE , mentre il terzo elemento della prima riga rappresenta il valore dominante della matrice sparsa che devo completare.
Il file per intero è così :
codice:6 4 3 0 3 2 1 1 0 2 0 5 2 3 4 3 0 1 3 1 0

Rispondi quotando