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*19
    26

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


Anmelden zum Antworten