Program liczy predkosc radialna z przesuniec linii widmowych. Plik z danymi zawiera predkosci laboratoryjne, obserwowane oraz blad wyznaczenia dl.linii obserwowanych.
#include<stdio.h>
#include<math.h>
#define C 3E5 /*predkosc swiatla w prozni (km/s)*/
main()
{
int i,N;
float lab[N], obs[N], vr[N], deltaObs[N], deltaVr[N];
float PredRad, deltaPredRad;
FILE *plik, *plik2;
char *nazwa, *nazwa2;
int d;
nazwa="Procjon.dat";
plik=fopen(nazwa,"r");
nazwa2="Procjon_wynik.dat";
plik2=fopen(nazwa2,"w");
N=0;
while ((d=fgetc(plik)) != EOF)
{
if (d==10) /* 10 oznacza znak nowej linii */
{N=N+1;}
}
fclose(plik);
plik=fopen(nazwa,"r");
for (i=1; i<=N; ++i)
{
fscanf(plik,"%f%f%f\n",&lab[i],&obs[i],&deltaObs[i]);
vr[i]=C*(obs[i]-lab[i])/lab[i];
deltaVr[i]=C*deltaObs[i]/lab[i];
fprintf(plik2,"%10.2f%10.2f%10.2f%10.2f%10.2f\n",lab[i],obs[i],deltaObs[i],vr[i],deltaVr[i]);
}
fprintf(plik2,"wyniki [km/s]:\n");
PredRad=0;
deltaPredRad=0;
for (i=1; i<=N; ++i)
{
PredRad=PredRad+vr[i];
deltaPredRad=deltaPredRad+deltaVr[i];
}
PredRad=PredRad/N;
deltaPredRad=deltaPredRad/N;
fprintf(plik2,"%10.5f%10.5f\n",PredRad,deltaPredRad);
fclose(plik);
fclose(plik2);
return 0;
}
--
AgnieszkaB - 16 Mar 2005