Zum Inhalt springen

Ausgabe eines Kalenderblattes?


The Nightfly

Empfohlene Beiträge

Hallo!

Ich brauche dringend Hilfe, komme einfach nicht weiter! :(

Wie bekommt man eine Ausgabe eines Kalenderblates hin? Mit Ausgabe der Wochentage?? Hab mal ein bisschen rumprobiert, aber wie gesagt ich hänge.

int So =1;

           int Mo =2;

           int Di =3;

           int Mi =4;

           int Do =5;

           int Fr =6; 

           int Sa =7;

           int j=Wt;


cout<< "Mo Di Mi Do Fr Sa So";


	{

		for(i=1;)


			So=1;

			j++ ;


			if (j>6)

			{

				j=0;

			}

Schon mal im Vorraus Danke für eure Hilfe

Mit Lieben Grüßen Nightfly ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

erstmal solltest du dir ein paar Gedanken über den Ablauf eines solchen Programms machen (denke ich).

Also im Prinzip ein Struktogramm erstellen.

Denn z.B. was soll denn dein Programm machen, wenn mal der 1. des Monats kein Montag ist, d.h. du musst als erstes mal festlegen für welchen Monat welchen Jahres du das Kalenderblatt erzeugen willst und damit auch wie viele Tage der Monat überhaupt hat. Dann berechnen welcher Tag der 1. ist.

Wenn du das weißt, dann mußt du dir Gedanken machen, wie die Schleife(n) aussehen müssen, um eine solche strukturierte Ausgabe zu erzeugen.

Wenn du die "Vorüberlegungen" hast, sollte das eigentliche Programmieren, nicht mehr so schwer sein.

Grüße,

Hcore

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe einen Programmablaufplan gemacht. Der Kalender berechnet nach den gregorianischen und rechnet den Januar und Februar eines Monats al 13. und 14. des jeweills letzten Monats. Der Kalender beginnt an dem 1.01.1900 zu zählen, obwohl meine Zeitspanne nur 2005 bis 2007 zählt. Das Problem ist, das ich die Berechnungen für die jeweilligen Wochentage und Tage im Monat schon fertig habe. Jetzt muss ich nur noch die Ausgabe hinbekommen...und das ist für mich echt ein schwieriges Unterfangen... :(

Ich scuh ja nur einen Hinweis, wo ich Anfangen könnte...

Naja trotzdem Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe einen Programmablaufplan gemacht. Der Kalender berechnet nach den gregorianischen und rechnet den Januar und Februar eines Monats al 13. und 14. des jeweills letzten Monats. Der Kalender beginnt an dem 1.01.1900 zu zählen, obwohl meine Zeitspanne nur 2005 bis 2007 zählt.

Gut, du weißt also, dass z.B der 01.02.2005 ein Dienstag ist.

Das Problem ist, das ich die Berechnungen für die jeweilligen Wochentage und Tage im Monat schon fertig habe. Jetzt muss ich nur noch die Ausgabe hinbekommen...und das ist für mich echt ein schwieriges Unterfangen... :(

Ich scuh ja nur einen Hinweis, wo ich Anfangen könnte...

Naja trotzdem Danke

Dann braucht du jetzt eine Schleife zur Ausgabe:

Ich schreib mal Pseudocode (ein bisschen Arbeit soll dir ja auch noch bleiben :) )


int i = 1;

cout<< "Mo Di Mi Do Fr Sa So" << endline;;

   // so viele Leerzeichen erzeugen bis die 1 unter dem passenden Wochentag steht

  for ( int l=1; l++; l < erster_tag_des_monats) 

   {cout << "   ";

    j++;}



while (i <= tage_im_monat)

{ if (i<10) cout << " " << "i" << " " else cout << i << " ";

  j++;

  if ( j==7) {cout << endline; j=0;}

Beispiel von oben: erster Tag in diesem Monat ist der Dienstag.

erster_tag_des_monats wäre also mit dem Wert 2 zu besetzen. (die Berchnung hast du ja, sagst du)

Der Rest ist dann relativ selbsterklärend denke ich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

1000 Dank! Ich versuchs mal, ich zeig dir aber nochmal meinen kompletten Code: Nicht wundern ist alles noch ziemlich durcheinander!!

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>


//Hier die Konstanten:


#define MAXJAHR 2007

#define MINJAHR 2005



int main()


{




 int schalttag;

 int tage_im_jahr;

 int wochen_im_jahr;


 int Monat;

 int Jahreszahl ;

 int Tag;

 cout<< "Bitte geben sie eine Jahreszahl an!: ";

 cin>>Jahreszahl;

 cout<<"\n";



 // ----------------------------------------------------------------------------

 // Hier Fehlermeldung wenn die Jahreszahlen nicht zwischen den berechnbaren

 // Werten 2005 und 2007 liegen

 //-----------------------------------------------------------------------------



 do

 {

	int hilfsvariable;

	if (Jahreszahl< MINJAHR)

	{

		hilfsvariable=-1;

		cout<< "Jahreszahl zu klein!\n";

	}

	if (Jahreszahl > MAXJAHR)

	{

		hilfsvariable=1;

		cout<< "Jahreszahl zu gross!\n";

	}

	switch (hilfsvariable)

	{

		case -1:

			cout<< "Sie koennen nur Jahreszahlen ueber " << MINJAHR <<" eingeben!\n";

			cout<<"Bitte geben Sie erneut eine Jahreszahl an: ";

			cin >> Jahreszahl;

			break;

		case 1:

			cout<< "Sie koennen nur Jahreszahlen unter " <<MAXJAHR <<"eingeben!\n";

			cout<<"Bitte geben Sie erneut eine Jahreszahl an: ";

			cin >> Jahreszahl;

			break;

	}


 } while (Jahreszahl>MAXJAHR || Jahreszahl<MINJAHR);


//------------------------------------------------------------------------------

// Eingabe des Monats in Zahlen von 1-12, bei Eingabe von 0 und Zahlen über 12

// erscheint  eine  Fehlermeldung.

//------------------------------------------------------------------------------


	cout<< "Bitte geben Sie denn gewuenschten Monatszahl an (1-12):";

	cin >> Monat;

	cout<<"\n";


 do

 {

	int hv;

	if (Monat<1)

	{

		hv=-1;

		cout<< "Monatszahl zu klein!\n";

	}

	if (Monat>12)

	{	hv=12;

		cout<< "Monatszahl zu gross!\n";

		cout<<"\n";

	}

		switch(hv)

	  {

		case -1:

			cout<< "Bitte geben sie eine geltende Monatszahl an!";

			cin>> Monat;

			cout<<"\n";

			break;

		case 12:

			cout<< "Das Jahr hat nur 12 Monate! Bitte geben Sie erneut ein!";

			cin>> Monat;

			break;

		}


  } while (Monat>12 || Monat<0 );




//------------------------------------------------------------------------------

//Berechnung Wochentag

// Nach dem gregorianischen Kalender hier gilt 2=Montag 3=Dienstag usw.

// Die Woche beginnt daher mit dem Sonntag

//------------------------------------------------------------------------------



	int Wt,K,J;

	float Jahr;

	int m;


	Jahr= Jahreszahl;

	K= (int)Jahr %100;

	J= (int)(Jahr-K)/100;


 //-----------------------------------------------------------------------------

 // Januar und Februar werden in gregorianischer Zeitrechnung als 13. u 14

 // des vorhergehenden Jahres gesehen.

 //  ---------------------------------------------------------------------------




	if(Monat<3)

	{

		Monat+=12;

		K-=1;


		if (K == (-1))

		{

			K=99;

			J-=1;

		}

	}


	m=Monat;

	int q=24;



//------------------------------------------------------------------------------

//	Wt=(q+((int)((m+1)*26)/10)+K+((int)K/4)+((int)J/4)-2*J)%7;

// Hier wird mit der  aufgespaltenen Gleichung gerechnet

//------------------------------------------------------------------------------



	int a1,a2,a3,a4,a5;

	a1=(m+1)*26/10;

	a2=K/4;

	a3=J/4;

	a4=q+a1+K+a2+a3-2*J;

	a5=a4%7;


	Wt=a5;

	cout<< "Wochentag: "<<Wt<<endl;




//-----------------------------------------------------------------------------

// Berechnung der Anzahl der Tage im Monat

// Hier werden zu jedem Monat des Jahres die Tage berechent

//-----------------------------------------------------------------------------



 int tage_im_Monat;


	switch (Monat)

	{

	  case 1:

	  case 3:

	  case 5:

	  case 7:

	  case 8:

	  case 10:

	  case 12:

	  cout<<"Tage im Monat= 31"<<endl;

		break;


	  case 4:

	  case 6:

	  case 9:

	  case 11:

	  cout<<"Tage im Monat= 30"<<endl;

		break;


	  case 2:

	  cout<<"Tage im Monat= 28"<<endl;

		break;

	 }


//------------------------------------------------------------------------------

// Form des Kalenders

//------------------------------------------------------------------------------


  int So =1;

  int Mo =2;

  int Di =3;

  int Mi =4;

  int Do =5;

  int Fr =6;

  int Sa =7;

  int i=Wt;



  cout<< "Mo Di Mi Do Fr Sa So";


  for (i=0; i>53;)

  cout<<i;

  i++;


  for (m=1; m<13;)

  cout<<m;

  m++;


	if (i>6)

	{

	 i=0;

	}






	getch ();

	return 0;

  }

Ich will ja gar nicht, dass man mir die ganze Arbeit abnimmt, nur so lerne ich's. Aber ich habe halt mal einen Leitfaden gebraucht ;) Danke nochmal

Link zu diesem Kommentar
Auf anderen Seiten teilen

also, ich hab das jetzt, so wie ich die Ausgabe vorgeschlagen hab, mal umgesetzt.

Nebenbei, deine Berechnung des Wochentags war auch irgendwo buggy, glaub ich. Habs auf jeden Fall mal ausgebessert und vereinfacht.


#include <iostream.h>

#include <conio.h>

#include <iomanip.h>


//Hier die Konstanten:


#define MAXJAHR 2007

#define MINJAHR 2005



int main()


{

 int Monat;

 int Jahreszahl ;


 cout<< "Bitte geben sie eine Jahreszahl an!: ";

 cin>>Jahreszahl;

 cout<<"\n";



 // ----------------------------------------------------------------------------

 // Hier Fehlermeldung wenn die Jahreszahlen nicht zwischen den berechnbaren

 // Werten 2005 und 2007 liegen

 //-----------------------------------------------------------------------------



 do

 {

	if (Jahreszahl< MINJAHR)

	{

		cout<< "Jahreszahl zu klein!\n";

		cout<< "Sie koennen nur Jahreszahlen ueber " << MINJAHR <<" eingeben!\n";

			cout<<"Bitte geben Sie erneut eine Jahreszahl an: ";

			cin >> Jahreszahl;

	}

	if (Jahreszahl > MAXJAHR)

	{

		cout<< "Jahreszahl zu gross!\n";	

		cout<< "Sie koennen nur Jahreszahlen unter " <<MAXJAHR <<"eingeben!\n";

			cout<<"Bitte geben Sie erneut eine Jahreszahl an: ";

			cin >> Jahreszahl;

	}



 } while (Jahreszahl>MAXJAHR || Jahreszahl<MINJAHR);


//------------------------------------------------------------------------------

// Eingabe des Monats in Zahlen von 1-12, bei Eingabe von 0 und Zahlen über 12

// erscheint  eine  Fehlermeldung.

//------------------------------------------------------------------------------


	cout<< "Bitte geben Sie denn gewuenschten Monatszahl an (1-12):";

	cin >> Monat;

	cout<<"\n";


 do

 {

	if (Monat<1)

	{

		cout<< "Monatszahl zu klein!\n";

				cout<< "Bitte geben sie eine geltende Monatszahl an!";

			cin>> Monat;

			cout<<"\n";

	}

	if (Monat>12)

	{		cout<< "Monatszahl zu gross!\n";

		cout<<"\n";

			cout<< "Das Jahr hat nur 12 Monate! Bitte geben Sie erneut ein!";

			cin>> Monat;

	}


  } while (Monat>12 || Monat<1 );




//------------------------------------------------------------------------------

//Berechnung Wochentag

// Nach dem gregorianischen Kalender hier gilt 0= Sonntag 1=Montag 2=Dienstag usw.

// Die Woche beginnt daher mit dem Sonntag

//------------------------------------------------------------------------------


 int a,y,m,d;


 a = (14 - Monat)/12;

 y = Jahreszahl -a;

 m = Monat + 12*a - 2;

 d = (1 + y + y/4 - y/100 + y/400 + (31*m)/12)%7;


 //Sonntag soll in unserem Kalender aber 7 sein

 if (d==0) d=7;

 cout<< "Wochentag: "<< d <<endl;




//-----------------------------------------------------------------------------

// Berechnung der Anzahl der Tage im Monat

// Hier werden zu jedem Monat des Jahres die Tage berechent

//-----------------------------------------------------------------------------



 int tage_im_monat;


	switch (Monat)

	{

	  case 1:

	  case 3:

	  case 5:

	  case 7:

	  case 8:

	  case 10:

	  case 12:

	  cout<<"Tage im Monat= 31"<<endl;

	  tage_im_monat = 31;

		break;


	  case 4:

	  case 6:

	  case 9:

	  case 11:

	  tage_im_monat = 30;

		break;


	  case 2:

	  tage_im_monat = 28;

	  //falls Schaltjahr 29!!!

		break;

	 }


//------------------------------------------------------------------------------

// Form des Kalenders

//------------------------------------------------------------------------------


int i = 1;

int j = 0;

cout<< "Mo Di Mi Do Fr Sa So" << endl;

   // so viele Leerzeichen erzeugen bis die 1 unter dem passenden Wochentag steht

  for ( int l=1; l < d; l++) 

   {cout << "   ";

    j++;}



while (i <= tage_im_monat)

{ if (i<10) cout << " " << i << " "; else cout << i << " ";

  j++; i++;

  if ( j==7) {cout << endl; j=0;}

}

cout << endl;


	getch ();



	return 0;

  }

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...