Umrechnung julianisches in gregorianisches Datum



  • Hallo miteinander!

    Wir haben hier folgendes Problem: Für unsere Informatik Studienleistung sollen wir ein Objektorientiertes C++ Programm schreiben, welches mit dem Gregorianischen Datum Rechenoperationen durchführt.

    Also z.B:
    - Eingabe zweier Daten, Ausgabe der dazwischenliegenden Tage,
    - Addition oder Subtraktion einer Anzahl von Tagen zu einem Eingegebenen Datum, Ausgabe des neuen Datums,
    - Vergleich, ob ein Datum größer oder kleiner ist, als ein Zweites.

    Es soll noch einige weitere Funktionen geben, welche aber prinzipiell ähnlich sind.

    Um anständig mit den Daten rechnen zu können, wandeln wir zunächst das eingegebene Datum in das Julianische um. Dort werden alle Tage seit dem 1.1.-4713 gezählt. Mit dieser Zahl können alle Rechenoperationen einfach durchgeführt werden.

    Unser Kernproblem liegt jetzt in der Funktion, die die vorhandene Tageszahl wieder in ein Datum des Gregorianischen Kalenders umwandelt.
    Also beispielsweise den Tag 2451911 in das Datum 1.1.2000 (evt falsche Zahl)
    Unsere Idee ist es, die Funktion in zwei Teile aufzuteilen. Ein Teil für das Datum vor Christi Geburt und einer danach. Das Jahr NUll soll vernachlässigt werden.

    Aber schon der erste Teil macht Probleme: Er funktioniert prima, bis man ein Datum anders als den 1.1. eingibt. (Das Jahr ist egal, das funktioniert immer.) Dann hängt sich das Programm auf.

    Kann mal jemand einen Blick auf die Funktion werfen?

    Die Headerdatei und die beiden CPPs hab ich mal hier hochgeladen:

    GRDAT1.zip

    Vielen Dank für eure Hilfe,
    Sandra

    //rechnet JD um in GD
    void GregDatum::umrechnungGD(){
    	int hilf=tagJD;
    	int g= 1721388-tagJD;//-1;
    
    	cout << "***********1721388-"<< tagJD<<" ist "<<g<<"************"<<endl;
    
    	getch();
    
    	if(tagJD<1721388){ //vor christi geburt
    		tag =1;
    		monat=1;
    		jahr=1;
    	//	int lauf=0;
    		while(g!=0)
    		{
    			cout<<g;
    			if(g>=(365+schaltjahr(jahr)))
    			{
    				g=g-(365+schaltjahr(jahr));
    				jahr--;
    
    				if(jahr==0)jahr--;
    
    				cout<<"jahr ";
    
    			}
    			else if(g>=(monatsletzter(monat))){
    				g=g-(monatsletzter(monat));
    				if(monat==1){jahr--; monat=12;}else monat--;
    
    				cout<<"monat ";
    
    			}
    			else if(g<=(monatsletzter(monat)))
    			{
    
    				cout<<"tag "<<g;
    				tag=monatsletzter(monat)-g; 
    				g=0;
    			};
    
    		//	lauf++;
    		}
    	cout<< "test"<<tag  << "."<< monat << "."<< jahr<<endl;
    	}
    }
    


  • Ist diese Umwandlung Teil der Aufgabe?
    Ich denke es ist vielleicht leichter, auf keinen Fall schwerer, Daten im Gregorianischen Kalender zu addieren / subtrahieren.

    Ansonsten auch mal bei Wikipedia schauen (http://de.wikipedia.org/wiki/Julianisches_Datum).


Anmelden zum Antworten