Witam!
Mam do napisania program wczytujący dane współrzędne geograficzne(ściślej geodezyjne) z pliku i zamieniający je na xyz i zapisujący w nowym pliku.
Z jedną linijką nie ma problemu, natomiast ja potrzebuję "nieskończenie" wiele linijek ,gdy napisałem pętlę coś się wysypalo i nie wiem co. Program niby coś liczy, pierwsze współrzedne są policzone dobrze i dobrze zapisane, ale dalej sprawa się komplikuje bo ani dobrze nie liczy ani nie zapisuje tak jak powinien. Dane podane jako Nr, B, L, H
. Kolega powiedział ze trzeba użyć funkcji read line by line tylko problem w tym że nie wiem jak.
Pomożecie?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
FILE *fp, *fp1;
double B, L, h, a, x, y, z, Brad, Lrad, pi=(3.14159265), N, e2 ;
int nr=1, eli;
/*Wybór elipsoidy*/
printf("Wybierz elipsoidę \n");
printf("1. GRS80 \n");
printf("2. Elipsoida Bessel'a \n");
printf("3. Elipsoida Krasowskiego \n");
scanf("%d", &eli);
/*Instrukcja wyboru*/
if (eli==1) {a=6378137, e2=0.00669438000229;}
else { if (eli==2) {a=6377397, e2=0.006674312326;}
else { if (eli==3) {a=6378245, e2=0.00669342162297;}
else {printf("Uruchom program jeszcze raz \n");
}}};
/*Otworzenie pliku*/
fp=fopen("dane.txt", "r");
/*if ((fp = fopen(const char *dane.txt, "r")) == NULL) { obsluz blad otwarcia pliku ; }*/
/*pętla*/
while((fp, "%d %lf %lf %lf", &nr, &B, &L, &h) != EOF)
{
fscanf(fp, "%d %lf %lf %lf", &nr, &B, &L, &h) ;
printf("%d %lf %lf %lf\n", &nr, &B, &L, &h);
}
//system("PAUSE");
return 0;
while (fscanf(fp, "%d %lf %lf %lf", &nr, &B, &L, &h) != EOF)
{
fprintf(fp, "%d %lf %lf %lf\n", &nr, &B, &L, &h);
//}
//fscanf(fp, "%d %lf %lf %lf", &nr, &B, &L, &h);
//fclose(fp);
/*GRS80
a=6378137;
e2=0.0066943800229;*/
/*Bessel
a=6377397
e2=0.006674312326*/
/*Krasowski
a=6378245
e2=0.00669342162297*/
/*Zamiana na radiany*/
Brad=B*pi/180;
Lrad=L*pi/180;
/*Lczenie N*/
N=(a/(sqrt(1-e2*(sin(Brad))*(sin(Brad)))));
/*Przeliczenie wspolrzednych*/
x=(N+h)*(cos(Brad))*(cos(Lrad));
y=(N+h)*(cos(Brad))*(sin(Lrad));
z=((1-e2)*N+h)*(sin(Brad));
/*Wypisanie wspolrzednych*/
printf ("x= %lf\n", x);
printf ("y= %lf\n", y);
printf ("z= %lf\n", z);
printf ("N= %lf\n", N);
//pause;
system("PAUSE");
/*Zapisywanie do pliku*/
fp1 = fopen("xyz.txt", "a");
fprintf(fp1, "%d %lf %lf %lf", nr, x, y, z);
fprintf(fp1, "\n");
fprintf(fp1, "\n");
fprintf(fp1, "\n");
fclose(fp1);
}
fclose(fp);
return 0;
}