Witam.
Mam problem.
Otóż robie program który musi wczytywać macierz i wektor wyrazow wolnych z pliku, ma byc to dane tak:
10 1 1 1 2
3 20 4 2 1
5 1 40 9 5
2 0 1 10 1
6 2 1 1 20
15
30
60
15
30
i teraz mam funkcje, ktora ma to wczytac...
void czytaj(void)
{
int i,j;
char input[100];
FILE *fp;
printf(" Podaj rozmiar macierzy i wektorow: ");
scanf("%d", &n);
n=n+1; //bo obliczenia robimy od 1, a w C mamy tablice od 0 do n, wiec, zeby przsunac
//tablice, trzeba dodac jeden, 0 pozycja w tablicy bedzie pusta
printf("\n");
macierzA = malloc(n*sizeof(double *));
liniaA = malloc(n*sizeof(double));
for(i=0;i<n+1;i++)
{
macierzA[i] = &liniaA[i];
}
wektorB = malloc(n*sizeof(double));
wektorX = malloc(n*sizeof(double));
posredniaA = malloc(n*sizeof(double *));
poslinA = malloc(n*sizeof(double));
for(i=0;i<n+1;i++)
{
posredniaA[i] = &poslinA[i];
}
poswektB = malloc(n*sizeof(double));
//sprawdzamy alokacje pamieci....
if(!macierzA || !liniaA || !wektorB || !wektorX || !posredniaA || !poslinA || !poswektB)
{
fprintf(stderr,"Nie udalo sie zainicjowac pamieci!!");
exit(1);
}
printf("Podaj nazwe pliku do odczytu: ");
scanf("%s", input);
if((fp=fopen(input, "r")) == NULL)
{
fprintf(stderr,"Blad podczas otwierania pliku: %s", input);
exit(1);
}
for(i=1;i<n+1;i++)
{
for(j=1;j<n+1;j++)
{
fscanf(fp,"%lf",&macierzA[i][j]);
}
fscanf(fp,"\n");
}
fscanf(fp,"\n");
for(i=1;i<n+1;i++)
{
fscanf(fp,"%lf\n",&wektorB[i]);
}
fclose(fp);
}
czemu program sie sypie?? wczesniej dziala, ale zle wczytywal macierz, jechal na dol, zamiast jechac najpierw pierwszy wiersz do konca, potem drugi do konca itd.
Prosze o pomoc, to wazny program na zaliczenie :(
Dzieki z góry.
Pozdrawiam.
PS: nizej jest ten sam posta, ale cos mnie wylogowalo... prosze o usuniecie tamtego posta