#include
#include
main()
{
FILE *fp;
double a[200][200],b[200],s,e1,max;
int n,i,j,k,t;
fp=fopen("dane","r");
fscanf(fp,"%d",&n);
printf("n=%d
",n);
for(i=0;i
prosze o sprawdzenie programu
-
- Użytkownik
- Posty: 57
- Rejestracja: 30 sie 2007, o 12:48
- Płeć: Kobieta
- Lokalizacja: Piekary Śląskie
- Podziękował: 3 razy
- Pomógł: 3 razy
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
prosze o sprawdzenie programu
Z tego co moge powiedziec, to ze dziala. Skompilowalo sie u mnie bez blednie. Jednak nie mam zielonego pojecia co ten program robi, wiec nic innego nie moge powiedziec. BTW. Warto formatowac kod i nalezy pamietac o sprawdzania poprawnosci itwarcia pliku, tj:
POZDRO
Kod: Zaznacz cały
#include<stdio.h>
#include<math.h>
int main()
{
FILE *fp;
double a[200][200],b[200],s,e1,max;
int n,i,j,k,t;
fp=fopen("dane","r");
if(!fp)
{
printf("Brak pliku!");
return 0;
}
fscanf(fp,"%d",&n);
printf("n=%d
",n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
fscanf(fp,"%lf",&a[i][j]);
printf("%5.1f ",a[i][j]);
}
fscanf(fp,"%lf",&b[i]);
printf("%5.1f
",b[i]);
}
for(k=0;k<n-1;k++)
{
max=fabs(a[k][k]);
t=k;
for(i=k+1;i<n;i++)
if((e1=fabs(a[i][k]))>max)
{
max=e1;
t=i;
}
if(max<1e-35)
{
printf("Dzielenie przez zero krok %d
",k);
return 0;
}
for(j=k;j<n;j++)
{
s=a[k][j];
a[k][j]=a[t][j];
a[t][j]=s;
}
s=b[k];
b[k]=b[t];
b[t]=s;
for(j=k+1;j<n;j++)
a[k][j]=a[k][j]/a[k][k];
b[k]=b[k]/a[k][k];
for(i=k+1;i<n;i++)
{
for(j=k+1;j<n;j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j];
b[i]=b[i]-a[i][k]*b[k];
}
}
b[n-1]=b[n-1]/a[n-1][n-1];
for(i=n-2;i>=0;i--)
{
s=0.0;
for(j=i+1;j<n;j++)
s+=a[i][j]*b[j];
b[i]-=s;
}
for(i=0;i<n;i++)
printf("x[%d]=%5.1f
",i,b[i]);
return 0;
}