Monatskalender in C
-
Schreibe Sie ein Programm, das einen Monatskalender am Bildschirm ausgibt.
Einzugeben sind, am wievielten Tag der Woche der Monat beginnt( 1-Mo, 2-Di
usw.) und wie viele Tage (28,29,30,31) der Monat aufweist:Beispiel:
Am wievielten Tag der Woche beginnt der Monat -> 3
Wie viele Tage hat der Monat -> 31
***6*13*20*27
***7*14*21*28
1**8*15*22*29
2**9*16*23*30
3*10*17*24*31
4*11*1825
5*12*1926*Abstand
Gibt es irgendein Formel oder ähnliches, womit man die Tage durch die Eingabe der Wochentage des Monats berechnen kann?
-
Ja gibt es z.B. auf Wikipedia.
-
So hab ich angefangen aber leider weiß ich nicht wie ich die Tage sowie beim Beispiel ordnen kann!
Könntet Ihr mir vielleicht helfen?
Danke im voraus!#include<stdio.h> int main(void) { int md, mz; int d; int test=0, test1=0; int fehler=0; char ch=' '; printf("Am wievielten Tag der Woche beginnt der Monat -> "); test=scanf("%d%c",&d,&ch); if(test!=2 || ch!='\n'){ fehler=1; printf("\nDie Eingabe war keine Zahl!\n"); }else{ printf("Wie viele Tage hat der Monat -> "); test1=scanf("%d%c",&md,&ch); if(test1!=2 || ch!='\n'){ fehler=1; printf("\nDie Eingabe war keine Zahl!\n"); fflush(stdin); } } for(mz=1;mz<=31;mz++){ if(d>=1 || d<=7) { if(md/28==1){ printf("%d ",mz); } } } return 0; }
-
http://de.wikipedia.org/wiki/Wochentagsberechnung
!!!!! Soweit ich weiß musst du für eine korrekte Berechnung Jahr, Monat und Tag eingeben. Sehe ich bei dir aber nicht.
-
void ausgabe(int firstDay, int anzDays) { int i, i1, tag; int firstNr = 2 - firstDay; //7 Zeilen ausgeben for(i = 0; i < 7; ++i) { //Spalte eins if(firstNr > 0) printf("%d", firstNr); else printf("*"); //Spalte zwei bis fünf tag = firstNr + 7; while(tag <= anzDays) { if(tag < 10) printf("*"); printf("*%d", tag); tag = tag + 7; } printf("\n"); ++firstNr; } }
-
Auf Zeile 4 wird von 2 firstDay abgezogen aber zu firstDay wird kein Wert zugewiesen. Was ist firstDay und was würde es auf Zeile 4 in firstNr speichern?
-
firstDay ist einer von 1 - 7, Mo - So, wie in Deinem Eingangspost vorgegeben, und firstDay ist beim Aufruf der Funktion als Parameter mitzugeben, genau so wie anzDays ...
-
Aso ok Danke für die Hilfe.