Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Leut!

Ich glaub das Thema hatte ich schon mal erstellt hier, aber durch nutzen der Suchfunktion hab ich es nicht gefunden. Dann eben nochmal. Wie ihr wisst bastle ich schon lange an einen Programm das den gregorianischen Kalender in den islamischen konvertiert. Dazu muss man erstmal den gregorianischen Kalender in den Julianischen umrechnen. Hier mein Code:

import javax.swing.*;

public class Umrechnung {

public static void main (String[]args)

{

	int GD = Integer.parseInt(JOptionPane.showInputDialog(null,"Geben Sie einen gergorianisches Tag ein"));

	int GM = Integer.parseInt(JOptionPane.showInputDialog(null,"Geben Sie einen gregorianischen Monat ein"));

	int GJ = Integer.parseInt(JOptionPane.showInputDialog(null,"Geben Sie ein gregorianischen Jahr ein"));

	double s = (int)(GJ/100);

	double s1 = GJ % 100;

	double s2 = (int)(1-(s1/100));

	double p = (int)(GJ/400);

	double p1 = GJ %400;

	double p2 = (int)(1 - (p1 / 400));

	double q = (int)(GJ / 4);

	double b = GJ % 4;

	double q2 = (int)(1 - (b / 4));

	double r = s %4;

	double r1 = 3 * p + r - 2;

	double r2 = q2 + p2 - s2;

	double Ausgleich = 0;

{


	if(GM==1)

	{

		Ausgleich =0;

	}


	if(GM==2)

	{

		Ausgleich =31;

	}


	if(GM==3)

	{

		Ausgleich =59;

		if (r2==1){

			Ausgleich =60;

	}

	}


	if(GM==4)

	{

		Ausgleich =90;

		if (r2==1){

			Ausgleich =91;

	}

	}


	if(GM==5)

	{

		Ausgleich =120;

		if (r2==1){

			Ausgleich =121;

	}

	}


	if(GM==6)

	{

		Ausgleich =151;

		if (r2==1){

			Ausgleich =152;

	}

	}


	if(GM==7)

	{

		Ausgleich =181;

		if (r2==1){

			Ausgleich =182;

	}

	}


	if(GM==8)

	{

		Ausgleich =212;

		if (r2==1){

			Ausgleich =213;

	}

	}


	if(GM==9)

	{

		Ausgleich =243;

		if (r2==1){

			Ausgleich =244;

	}

	}


	if(GM==10)

	{

		Ausgleich =273;

		if (r2==1){

			Ausgleich =274;

	}

	}


	if(GM==11)

	{

		Ausgleich =304;

		if (r2==1){

			Ausgleich =305;

	}

	}


	if(GM==12)

	{

		Ausgleich =334;

		if (r2==1){

			Ausgleich =335;

	}

	}

	double J = (int)(1721058 + 1461 * q + 365 * b - r2 - r1 + GD + Ausgleich);	

	JOptionPane.showMessageDialog(null,J);
Bis dahin rechnet man den Gregorianischen Kalender in den islamischen um. Ein Kollege der nur C beherrscht hat mir dazu eine Erweiterung geschrieben (in C natürlich, das ich nicht kann). Hier ist sein Code:
/***************************************************/ 

/* Islamic Tabular Calendar Date */ 

/* Calculate month, day, and year from Julian date */ 

/* Day 1 starts at Saturday 1800, sunset */ 

/* return 1, if valid, 0 otherwise */ 

/***************************************************/ 

//const long islamicMuharram = 1948440; // civil calendar epoch 

const long islamicMuharram = 1948439; // astronomical calendar epoch 

int DllExport JD2DMY_Islamic ( double J, int &day, int &month, long &year, double &ut, int &DOW ) 

{ 

ut = frac(J+0.5); 

J = J-ut+0.5; 

ut *= 24.; 

if (J<islamicMuharram) return(0); // invalid date 

long L = (long)(J-islamicMuharram+10632); 

long N = (long)((L-1)/10631); 

L = L-10631*N+354; 

long j = int((10985-L)/5316)*int((50*L)/17719)+int(L/5670)*int((43*L)/15238); 

L = L-int((30-j)/15)*int((17719*j)/50)-int(j/16)*int((15238*j)/43)+29; 

month = int((24*L)/709); 

day = L-int((709*month)/24); 

year = 30*N+j-30; 

if (year<1) return(0); // invalid date 

return(1); 

} 



/***************************************************/ 

/* Islamic Tabular Calendar Date */ 

/* Calculate Julian date from month, day, and year */ 

/* Day starts at sunset of J */ 

/* return 1, if valid, 0 otherwise */ 

/***************************************************/ 

int DllExport DMY2JD_Islamic ( int day, int month, long year, double &J ) 

{ 

if (year<1) return(0); // invalid date 

J = int((11*year+3)/30)+354*year+30*month-int((month-1)/2)+day+islamicMuharram-385; 

return(1); 

} 



static const char* monthsIslamic[] = { "", "Muharram", "Safar", "Rabi'a I", "Rabi'a II", "Jumada I", "Jumada II", "Rajab", "Sha'ban", "Ramadan", "Shawwal", "Dhu al-Q'adah", "Dhu al-Hijjah"}; 

const DllExport char* MonthIslamic ( int month ) 

{ 

if (month<1 || month>12) return(""); 

return monthsIslamic[month]; 

}

Vielen Dank!

Mit freundlichen Grüßen

Ahlu-Sunnah

Geschrieben

Und was willst du jetzt?

Auch wenn du kein C kannst ist der Code sehr Java-Ähnlich.

<funktionsname> <rückgabetyp> (<parametertyp 1> <parameter name1>,..)

Und der rest ist gleich, selbst die Datentypen sind identisch. Also versuch dich doch mal selbst dran..

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...