Sahit
Admiral
- Registriert
- März 2010
- Beiträge
- 8.117
Servus hatten die Aufgabe ein kleines Programm in C zu programmieren das die Entfernung von zwei Koordinaten auf der Erde berechnet. Das Programm läuft auch auf dem WTS (Windows Terminal Server) der Uni ohne Probleme. Ich wollte das Programm nun auf meinem Rechner daheim ausführen. Mit folgendem Ergebnis: Das Programm öffnet sich --> ich gebe alle Werte ein --> Das Programm schließt sich (wahrscheinlich läuft es durch und schließt sich sofort wieder). Wie kann ich dieses Verhalten unterbinden?
Hier der Code
Ich weiß es gibt sicher noch Verbesserung Potential aber das Programm läuft und das ist das wichtigste für mich
Sahit
Hier der Code
Code:
#include <stdio.h>
#include <math.h>
int main()
{
const double pi=3.141592654;
double lg,lm,bg,bm,lg1,lm1,bg1,bm1,l1,b1,b2,l2,f,a,F,G,L,S,C,w,D,R,H1,H2,s,l;
//Eingabe
printf("Eingabe Standort Breitengrad Koordinaten auf der Suedhalbkugel in Minus: Grad");
scanf("%lf", &bg);
printf("Eingabe Standort Breitengrad Koordinaten auf der Westhalbkugel in Minus: Minute");
scanf("%lf", &bm);
printf("Eingabe Standort Laengengrad Koordinaten auf der Westhalbkugel in Minus : Grad");
scanf("%lf", &lg);
printf("Eingabe Standort Laengengrad Koordinaten auf der Suedhalbkugel in Minus : Minute");
scanf("%lf", &lm);
printf("Eingabe Ziel Breitengrad Koordinaten auf der Suedhalbkugel in Minus: Grad");
scanf("%lf", &bg1);
printf("Eingabe Ziel Breitengrad Koordinaten auf der Suedhalbkugel in Minus: Minute");
scanf("%lf", &bm1);
printf("Eingabe Ziel Laengengrad Koordinaten auf der Westhalbkugel in Minus : Grad");
scanf("%lf", &lg1);
printf("Eingabe Ziel Laengengrad Koordinaten auf der Westhalbkugel in Minus : Minute");
scanf("%lf", &lm1);
// Rechnung
b1 = bg+bm/60;
l1 = lg+lm/60;
b2 = bg1+bm1/60;
l2 = lg1+lm1/60;
printf("Uebung 2 - Entfernungsberechnung\n\n");
printf("WGS-Koordinaten Koordinaten auf der Suedhalbkugel in Minus\n");
printf("b1 = %lf, l1 = %lf\n", b1, l1);
printf("b2 = %lf, l2 = %lf\n\n", b2, l2);
// Abplattung der Erde
f=1/298.257223563;
printf("f = %lf\n",f);
// Aequatorradius der Erde in km
a=6378137.0/1000.0;
printf("a = %lf\n\n",a);
// Hilfsgroessen F, G und l berechnen
F = (b1+b2)/2;
printf("F = %lf\n",F);
G = (b1-b2)/2;
printf("G = %lf\n",G);
l = (l1-l2)/2;
printf("l = %lf\n\n",l);
// F, G und l in Bogenmass umrechnen
F = ((b1+b2)/2)*(pi/180);
printf("F = %lf\n",F);
G = ((b1-b2)/2)*(pi/180);
printf("G = %lf\n",G);
l = ((l1-l2)/2)*(pi/180);
printf("l = %lf\n\n",l);
// Hilfsgroessen S, C, omega
S = sin(G)*sin(G)*cos(l)*cos(l)+cos(F)*cos(F)*sin(l)*sin(l);
printf("S = %lf\n",S);
C = cos(G)*cos(G)*cos(l)*cos(l)+sin(F)*sin(F)*sin(l)*sin(l);
printf("C = %lf\n",C);
w = atan(sqrt(S/C));
printf("w = %lf\n\n",w);
// Grobe Naeherung fuer Abstand
D = 2.0*w*a;
printf("D = %lf\n\n",D);
// Hilfsgroesse R
R = sqrt(S*C)/w;
printf("R = %lf\n\n",R);
// Korrekturfaktoren H1 und H2
H1 = (3.0*R-1)/(2.0*C);
printf("H1 = %lf\n",H1);
H2 = (3.0*R+1)/(2.0*S);
printf("H2 = %lf\n\n",H2);
// Abstand s in Kilometern
s = D*(1+f*H1*sin(F)*sin(F)*cos(G)*cos(G)-f*H2*cos(F)*cos(F)*sin(G)*sin(G));
// Ergebnisausgabe
printf("Entfernung in km = %lf\n\n",s);
// Programmende, Statuscode 0
return 0;
}
Ich weiß es gibt sicher noch Verbesserung Potential aber das Programm läuft und das ist das wichtigste für mich
Sahit