Salve a tutti...sono nuovo di qui..volevo chiedere aiuto riguardante l'allocazione memoria.
Ho un prog che legge da file una matrice e il termine noto e poi con il metododi eliminazione di gaus mi risolve il sistema.
Problema..mi viene il segmentation fault...e non capisco perchè ho 2 prog uguali uno in c(il mio) e l'altro in c++( quello del prof) e ovviamente il suo funziona...se qualcuno mi può spiegare perchè..grazie...allego la parte solamente della lettura e stampa a video e il file della matrice
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int n;
float **A, *x, *b;
void leggidati(char nomefile[]) {
FILE *fin;
int i, j;
fin = fopen("nomefile","r");
fscanf(fin,"%d",&n);
x = (float*)malloc(n*sizeof(float));
b = (float*)malloc(n*sizeof(float));
A = (float**)malloc(n*sizeof(float*));
for (i = 0; i < n; i++)
A[ i ] = (float*)malloc(n*sizeof(float));
for (i = 0; i < n; i++)
for (j = 0; j < n; j++){
fscanf(fin,"%f",&A[ i ][j]);
printf("%f ",A[ i ][j]);
if (j==n-1) printf(" \n");
}
for(i=0 ;i<n ;i++){
fscanf(fin,"%f",&b[ i] );
printf("b[%d] = %f\n",i,x[ i ]);
}
fclose(fin);
}
main (){
char nomefile[256];
printf("inserisci file: \n" );
scanf("%s",&nomefile);
leggidati(nomefile);
}
matrice:
3
2 3 -1
0 10 5
0 0 2
-1 -5 -2
vi ringrazio
Ultima modifica effettuata da Hawk il 29/07/2006 alle 20:14 |