Ciao a tutti! credo che il problema con questo programma e' che devo aver fatto un errore
nella parte in qui dico all'utente di inserire il nome del file: infatti se lo lancio (dopo averlo
compilato) mi chiede di inserire il nome del file ma poi si pianta tutto.. come fare?
grazie per il vostro aiuto!
P.S se l'errore non e' in quel punto del codice, allora perche' non va?
P.P.S il file in cui ho i dati sulla matrice e' del tipo .txt oppure .dat..
codice:
void LeggiMatrice(int n,FILE *f1,int matriceDAleggere[][MaxDim]);
void AzzeraMatrice(int n, int matriceDAazzerare[][MaxDim]);
void AzzeraArray(int n,int array[MaxDim]);
void SommaRighe(int n, int array[MaxDim], int matrice[][MaxDim]);
void SommaColonne(int n, int array[MaxDim], int matrice[][MaxDim]);
int main(void)
{
int A1[MaxDim],A2[MaxDim];
int M[MaxDim][MaxDim];
int DimensioneMatrice;
char NomeFile[MaxDim];
FILE *f1;
DimensioneMatrice=3;
printf("Si inserisca il nome del file su cui sono salvati i dati relativi alla matrice.\n");
scanf("%s", &NomeFile);
f1=fopen("NomeFile","r");
LeggiMatrice(DimensioneMatrice,f1,M);
fclose(f1);
SommaRighe(DimensioneMatrice, A1, M);
SommaColonne(DimensioneMatrice, A2, M);
return (0);
}
/* funzione che legge una matrice da un file, elemento per elemento */
void LeggiMatrice(int n,FILE *f1,int matriceDAleggere[][MaxDim])
{
int i,j;
AzzeraMatrice(n,matriceDAleggere);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
fscanf(f1,"%d", &matriceDAleggere[i][j]);
}
}
}
/* funzione che pone a 0 tutti li elementi di una matrice */
void AzzeraMatrice(int n, int matriceDAazzerare[][MaxDim])
{
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
matriceDAazzerare[i][j]=0;
}
}
}
/* funzione che pone a zero tutti gli elementi di un array */
void AzzeraArray(int n,int array[MaxDim])
{
int i;
for (i=0;i<n;i++)
{
array[i]=0;
}
}
/* funzione che prende matrice e restituisce array con le somme degli elementi sulle righe */
void SommaRighe(int n, int array[MaxDim], int matrice[][MaxDim])
{
int i,j;
AzzeraArray(n,array);
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
array[i]=array[i]+matrice[i][j];
}
}
}
/* funzione che prende una matrice e restituisce un array con per elementi le somme sulle colonne */
void SommaColonne(int n, int array[MaxDim], int matrice[][MaxDim])
{
int i,j;
AzzeraArray(n, array);
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
array[i]=array[i]+matrice[j][i];
}
}
}