Kalenderblatt - Programm schreiben

Joined
May 28, 2002
Messages
1,967
Points
285
Hey Leute, also folgendes, ich muss für die Schule ein Programm schreiben.
Leider habe ich vom programmieren keine Ahnung.

Also die Aufgabenstellung ist :

Schreiben Sie ein Programm, welches nach Eingabe des Monats (und des Jahres) ein Kalenderblatt für den Monat ausgibt. Der Kalender soll von seiner Einführung bis zum Jahr 3000 gültig sein. Das Kalenderblatt soll mit Hilfe von Schleifen erstellt werden. Fehleingaben sind abzufangen. Das Programm ist laufen wiederholbar (ohne Neustart) und kann durch einen Beendigungsbefehl verlassen werden.
Als Programmierumgebung ist das Visual Studio für C# zu verwenden.
Auserdem soll ein Struktogramm erstellt werden.


_______


Meint ihr mir könnte wer helfen und das programmieren? oder irgendwie erklären was gemacht werden muss?

Danke schon mal im vorraus.
 
Musst du halt noch von c++ nach c# konvertieren.. Struktogramme müsst ihr hoiffentlich nur erstellen ums mal gemacht zu haben und festzustellen dass sie scheiße sind..

$ ./a.out $ ./a.out
year? 1900
month? 1
jan, 1900

1. mon 2. tue 3. wed 4. thu 5. fri 6. sat 7. sun
8. mon 9. tue 10. wed 11. thu 12. fri 13. sat 14. sun
15. mon 16. tue 17. wed 18. thu 19. fri 20. sat 21. sun
22. mon 23. tue 24. wed 25. thu 26. fri 27. sat 28. sun
29. mon 30. tue 31. wed

year? 2013
month? 4
apr, 2013

1. mon 2. tue 3. wed 4. thu 5. fri 6. sat 7. sun
8. mon 9. tue 10. wed 11. thu 12. fri 13. sat 14. sun
15. mon 16. tue 17. wed 18. thu 19. fri 20. sat 21. sun
22. mon 23. tue 24. wed 25. thu 26. fri 27. sat 28. sun
29. mon 30. tue

year? 2100
month? 2
feb, 2100

1. mon 2. tue 3. wed 4. thu 5. fri 6. sat 7. sun
8. mon 9. tue 10. wed 11. thu 12. fri 13. sat 14. sun
15. mon 16. tue 17. wed 18. thu 19. fri 20. sat 21. sun
22. mon 23. tue 24. wed 25. thu 26. fri 27. sat 28. sun

year? 2400
month? 2
2400 ist ein Schaltjahr.
feb, 2400

1. tue 2. wed 3. thu 4. fri 5. sat 6. sun 7. mon
8. tue 9. wed 10. thu 11. fri 12. sat 13. sun 14. mon
15. tue 16. wed 17. thu 18. fri 19. sat 20. sun 21. mon
22. tue 23. wed 24. thu 25. fri 26. sat 27. sun 28. mon

year? 1275875483
month? 12
dec, 1275875483

1. mon 2. tue 3. wed 4. thu 5. fri 6. sat 7. sun
8. mon 9. tue 10. wed 11. thu 12. fri 13. sat 14. sun
15. mon 16. tue 17. wed 18. thu 19. fri 20. sat 21. sun
22. mon 23. tue 24. wed 25. thu 26. fri 27. sat 28. sun
29. mon 30. tue
funktioniert bis zum jahr öh ~1275875484 n. Chr.
Code:
#include <iostream>
using namespace std;

bool isALeapYear( int year )
{
	/* Check if the year is divisible by 4 or 
	is divisible by 400 */
	if ( (year % 4 == 0 && year % 100 != 0) || ( year % 400 == 0))
		return true;
	else
		return false;
}


int main ()
{
  string week[]={"sun","mon","tue","wed","thu","fri","sat"};
  int months[]={31,28,31,30,31,30,31,30,31,30,31,30};
  string monthn[]={"jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"};
  int year,month,days;
//     Thirty days hath September,
//	April, June, and November,
//	all the rest have thirty-one.
//	February has twenty-eight,
//	but leap year coming one in four
//	February then has one day more.
//     also what is a gregorian calendar and what happens in june of 1275875484 (year 2k bug)
  
  
  while(true){ //exit = ctrl +c
  
  cout<< "year? "; cin>>year; //Eingabe des Jahres
  cout<<"month? "; cin>>month; //Eingabe des Monats
  
  if(month>12){cout<<"Month not allowed (>12)\n";return -1;}// viertel-arschige methode um fehler bei der eingabe zu fangen
  else if(month==0){cout<<"Month not allowed(=0)\n";return -1;}
  month--; //monat-1 der Einfachheit halber
  
  days = 365*year + (year-1)/4 - (year-1)/100 + (year-1)/400 ;//ersten tag des jahres berechnen, von dem weitergezaehlt wird

  if(isALeapYear(year)){
		months[1]=29;//wenns ein schaltjahr ist hat der februar 29 Tage, sonst 28
		cout<<year<<" ist ein Schaltjahr.\n";
  }
  else{months[1]=28;}
  
  cout<<monthn[month]<< ", "<< year<< "\n"; 
  
  if(month==0){} // januar = nichts tun
  else{ // sonst die Tage zu days hinzuaddieren
    for (int i=0; i<month ; ++i){
			  days=days+months[i];
			}
	  }
  for(int d=0;d<months[month];++d){//druckt das Kalendarblatt
		if(d%7==0){cout<<" \n ";}
		cout<<d+1<<". "<<week[(days)%7]<< " ";
		++days;
	} 
	cout<<"\n\n";
}
  return 0;
}
 
Last edited:
Solltest vielleicht die Tagen anpassen.
Der August hat 31 Tage, September 30...
 
Kann mir denn keine helfen, würde auch paar Euro in Paypal bezahlen. Muss das bis morgen abgeben und schaffe es nicht das funktionierend in C# hinzuschreiben. :( bitte helft.
 
Demon hat dir doch nen Fertigen Code hingeklatscht den du nur konvertieren musst, wo ist dein Problem ?
 
mh hab jetzt noch nie den drang gespuerrt was in c# zu machen und dementsprechend keinen compiler installiert, aber afaik werden in diesem fall lediglich die arrays anders initialisiert... d.h. int[] a; statt int a[];
C# looks a lot like C++, and while this makes the transition easy, there are some traps along the way. If you write what looks like perfectly legitimate code in C++, it won't compile, or worse, it won't behave as expected. Most of the syntactic changes from C++ to C# are trivial (no semicolon after a class declaration, Main is now capitalized). I'm building a Web page which lists these for easy reference, but most of these are easily caught by the compiler and I won't devote space to them here. I do want to point out a few significant changes that will cause problems, however.
eine generische entwicklungsumgebung mit code highlighting wuerde vermutlich die entsprechenden stellen rot markieren und alternativen vorschlagen... davon mal ab sollte es um dich rum irgendwo menschen geben die die gleiche aufgabe loesen muessen, aehnlich wenig ahnung haben, und mit dir zusammen in der lage sein sollten meinen code irgendwie zu verstehen... ich mein was sachen wie ints, chars, strings,etc sind sollteste im schlaf wissen... for/while schleifen sind die ersten paar male ungewohnt aber das gibt sich mit der zeit

das ding ist du wirst die c# syntax niemals lernen wenn du dir nicht zumindest ne IDE installierst in der du Beispiele ausprobieren kannst bzw. mal nen Hello World schreibst.. manchmal isset halt spassig solche 5-10Minuten aufgaben zu loesen, is nur schade wenn der OP nichts mit der antwort Anfangen kann..

Code:
// Hello1.cs
public class Hello1
{
   public static void Main()
   {
      System.Console.WriteLine("Hello, World!");
   }
}
 
Last edited:
Back
Top Bottom