Mockrát ti děkuji, díky tvé pomoci už to načítání funguje bez problému. Těd se však snažím přidat onu gaussovu eliminační metodu. A jsem zase ztracená :(
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char** argv)
{
FILE *vstupni;
char jmeno[255];
int c,r,k;
int i=0,j=0,pocetRadku=0,pocetrovnic=0;
int *pocetSloupcu;
float **matice, x[10], sum;
printf("Zadej jmeno souboru: ");
gets(jmeno);
if((vstupni=fopen(jmeno,"rt"))==NULL)
{
printf("Vstupni soubor %s nelze otevrit\n",jmeno);
return -1;
}
while((c = getc(vstupni)) != EOF){
if(c == '\n')
pocetRadku++;
}
printf("\npocet radku %d",pocetRadku);
printf("\n");
pocetrovnic=pocetRadku-1;
printf("pocet rovnic je %d\n\n",pocetrovnic);
//jednorozmerne pole pro urceni poctu sloupcu
pocetSloupcu= (int*) calloc( pocetRadku , sizeof(int)); //pocet sloupcu nacitame pres pole
rewind(vstupni);
while((c = getc(vstupni)) != EOF)
{ /* přečtení souboru */
while((c =getc(vstupni)) != '\n')
{
if(c == ' ' )
{ //postupne scitame pocty mezer
pocetSloupcu[i]++;
}
}
pocetSloupcu[i]++; // pridavam jednicku kvuli tomu, ze v poslednim sloupci matice neni mezera
i++;
}
matice = (int **)calloc( pocetRadku , sizeof(int *)); //zde si alokuju kolik ma mit matice radku
rewind(vstupni);
//načítání matice
for(i= 0; i< pocetRadku ; i++){
matice[i] = (int *)calloc( pocetSloupcu[i] , sizeof(int)); //tady alokuju sloupecky kazdeho radku
for(j=0; j<pocetSloupcu[i]; j++){
fscanf(vstupni, "%f", &matice[i][j]); //tady matici plním
}
}
// vypisování matice, když změním i=0 na i=1 tak budu mít matici bez prvního čísla (urcovacího pocet rovnic)
for(i = 0; i < pocetRadku ; i++){
for (j = 0; j < pocetSloupcu[i]; j++)
printf("%f ", matice[i][j]);
printf("\n");
}
//-------------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------------
//GAUSSOVKA---------------------------------------------
for(j=0; j<=pocetrovnic; j++)
{
for(i=0; i<=pocetrovnic; i++)
{
if(i>j)
{
r=matice[i][j]/matice[j][j];
for(k=0; k<=pocetrovnic+1; k++)
{
matice[i][k]=matice[i][k]-r*matice[j][k];
}
}
}
}
x[pocetrovnic]=matice[pocetrovnic][pocetrovnic+1]/matice[pocetrovnic][pocetrovnic];
for(i=pocetrovnic-1; i>=1; i--)
{
sum=0;
for(j=i+1; j<=pocetrovnic; j++)
{
sum=sum+matice[i][j]*x[j];
}
x[i]=(matice[i][pocetrovnic+1]-sum)/matice[i][i];
}
printf("\nvýsledek je: \n:");
for(i=0; i<=pocetrovnic; i++)
{
printf("\nx%d=%f\t",i,x[i]);
}
system("PAUSE");
return 0;
}