Questo è il main :
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;
}
e questa è la funzione che uso per allocare in memoria la matrice :
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);
}
}
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 :|
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