kontrolle..



  • hasso schrieb:

    Hallo

    ? bitte was spielt das für eine rolle?

    dass man all deine Fragen zu diesem Programm in einem einzigen Thread beantworten kann. Das macht den Helfern nicht einfach, wenn man den Code an 3 verschiedenen Threads lesen muss.



  • Dass nach Deiner Willkommensnachricht eine Taste gedrückt werden muss, ist nicht klar, wenn's nicht da steht.
    getch( ) ist nicht Standard C.

    Hasso schrieb:

    while(weiter == 'j' || 'J' || 'y' || 'Y' || 1)  // wird die taste j gedrückt wird der Prozess neugestartet!
    

    Dein Kommentar passt nicht zur Bedingung. Ergo: Eins von beiden ist Quatsch.

    Hasso schrieb:

    do
    { // do while schleife
    

    Soetwas Kommentiert man nicht.

    Hasso schrieb:

    (!(jahr%4 && jahr %100 && jahr%400));
    

    ist nicht korrekt.

    Hasso schrieb:

    if( (monat ==01 && tag <=31)||   // Solange Bedingungen war wird das Datum ausgegeben!
    (monat ==02 && tag <=28) ||
    (monat ==03 && tag <=31) ||
    (monat ==04 && tag <=30) ||
    (monat ==05 && tag <=31) ||
    (monat ==06 && tag <=30) ||
    (monat ==07 && tag <=31) ||
    (monat ==8 && tag <=31) ||
    (monat ==9 && tag <=30) ||
    (monat ==10 && tag <=31) ||
    (monat ==11 && tag <=30) ||                            //(monat ==02 && (!(schaltjahr)))||
    (monat ==12 && tag <=31) ||
    ((monat ==02) && (tag ==29)&& (schaltjahr)))
    

    für soetwas nimmt man lookup tables.

    Hasso schrieb:

    system("pause");
    

    Funktioniert nur unter DOS und Windows. Dafür gibt es elegantere Lösungen: Automatisches Schließen verhindern

    Hasso schrieb:

    Die eigentliche Prüfung übernimmt ein Modul: pruefung.

    erfüllst Du nicht.

    cheers, Swordfish



  • Hallo Hasso!

    Wärst Du bereit, oder ist es Dir erlaubt, die Header-Datei <time.h> in Dein Programm einzubinden?
    Dann kannst Du z.B. time_t/ struct tm (enthält alle zu einer Kalenderzeit (gregorianische) relevanten Komponenten)
    zur Plausibiltätsprüfung einsetzen - und Dein Programm wird schlank, elegant (+ genial).

    MfG



  • Natürlich bin ich bereit, wobei ich werde mir die kritik zu herzen nehmen und draus lernen werde.

    zu dem Zitat :

    Wärst Du bereit, oder ist es Dir erlaubt, die Header-Datei <time.h> in Dein Programm einzubinden? 
    Dann kannst Du z.B. time_t/ struct tm (enthält alle zu einer Kalenderzeit (gregorianische) relevanten Komponenten) 
    zur Plausibiltätsprüfung einsetzen - und Dein Programm wird schlank, elegant (+ genial).
    

    Natürlich ist es erlaubt hauptsache das Programm muss natürlich ein Prüfmodul entahlten. Könntest du mir dabei helfen kenn die funktion nicht und hab 0 ahnung wie das funktionieren soll...

    Die eigentliche Prüfung übernimmt ein Modul: pruefung.
    

    erfüllst Du nicht.
    Langsam zweifle ich an meiner Intelligenz 🙂 ich dachte meine do while Schhleife ist das Prüfmodul es prüft doch die eingabe oder nicht, wie sollte denn so ein Prüfmodul aussehen ?

    Lg hasso



  • Hasso schrieb:

    Swordfish schrieb:

    Hasso schrieb:

    Die eigentliche Prüfung übernimmt ein Modul: pruefung.

    erfüllst Du nicht.

    Langsam zweifle ich an meiner Intelligenz 🙂 ich dachte meine do while Schhleife ist das Prüfmodul es prüft doch die eingabe oder nicht, wie sollte denn so ein Prüfmodul aussehen ?

    Naja, ein Modul kann man aus einem Ganzen einfach herausnehmen und irgendwo anders verwenden. In C erfüllt diese Bedingung zum Bleistift eine Funktion.

    cheers, Swordfish

    BTW: Lern zitieren!



  • Swordfish schrieb:

    Naja, ein Modul kann man aus einem Ganzen einfach herausnehmen und irgendwo anders verwenden. In C erfüllt diese Bedingung zum Bleistift eine Funktion.
    .

    aha.. wie soll ich dieses prüfmodul dann zusammenbasteln?

    gruß hasso



  • Du entwickelst eine Funktion, der ein Datum übergeben werden kann. Die Funktion führt eine Gültigkeitsprüfung durch und gibt gegebenenfalls einen Fehlercode oder "alles OK" zurück.

    cheers, Swordfish



  • Swordfish schrieb:

    Du entwickelst eine Funktion, der ein Datum übergeben werden kann. Die Funktion führt eine Gültigkeitsprüfung durch und gibt gegebenenfalls einen Fehlercode oder "alles OK" zurück.

    cheers, Swordfish

    Könntest du mir bei der erstellung der funktion behilflich sein . ich versteh nicht die while Schleife kontrolliert doch ob das Datum ausgeben werden darf und falls es nicht eine Fehlermeldung angezeigt wird.

    gruß hasso



  • Deine Programmlogik ist noch fehlerhaft. Dein Programm behauptet zB, der 29.02.2100 wäre ein gültiges Datum. Wo hast Du denn Probleme dabei, eine Funktion zu schreiben?

    cheers, Swordfish



  • Swordfish schrieb:

    Deine Programmlogik ist noch fehlerhaft. Dein Programm behauptet zB, der 29.02.2100 wäre ein gültiges Datum. Wo hast Du denn Probleme dabei, eine Funktion zu schreiben?

    cheers, Swordfish

    Warum ist das Datum denn nicht gültig? 2100 ist ein Sage in schaltjahr und hat 29 tage in Februar.

    Problem 1)
    Sowas noch nicht gemacht.
    Problem 2)
    Was die funktion beinhalten soll bin ich mir nicht bewusst.

    lg hasso 🙂



  • wenn du so lieb bist könntest du mir die funktion aufschreiben damit ich diesen stress endlich los bin...

    das wär nett.

    lg hasso



  • hasso schrieb:

    Warum ist das Datum denn nicht gültig? 2100 ist ein Sage in schaltjahr und hat 29 tage in Februar.

    Alle Jahre, die durch 4 ohne Rest teilbar sind, sind Schaltjahre.
    Alle Jahre, die durch 100 ohne Rest teilbar sind, sind keine Schaltjahre.
    Alle Jahre, die durch 400 ohne Rest teilbar sind, sind wiederum Schaltjahre.

    2100 ist also kein Schaltjahr.

    hasso schrieb:

    wenn du so lieb bist könntest du mir die funktion aufschreiben damit ich diesen stress endlich los bin...

    Können: ja. Tun: nein. Du sollst etwas lernen.

    Wenn Du natürlich ein akzeptables Angebot machst, bekommst Du das gesamte Programm (113 Zeilen 100% BugFree ™ Standard C) natürlich gerne. 😉

    cheers, Swordfish



  • Swordfish schrieb:

    hasso schrieb:

    Warum ist das Datum denn nicht gültig? 2100 ist ein Sage in schaltjahr und hat 29 tage in Februar.

    Alle Jahre, die durch 4 ohne Rest teilbar sind, sind Schaltjahre.
    Alle Jahre, die durch 100 ohne Rest teilbar sind, sind keine Schaltjahre.
    Alle Jahre, die durch 400 ohne Rest teilbar sind, sind wiederum Schaltjahre.

    2100 ist also kein Schaltjahr.

    hasso schrieb:

    wenn du so lieb bist könntest du mir die funktion aufschreiben damit ich diesen stress endlich los bin...

    Können: ja. Tun: nein. Du sollst etwas lernen.

    Wenn Du natürlich ein akzeptables Angebot machst, bekommst Du das gesamte Programm (113 Zeilen 100% BugFree ™ Standard C) natürlich gerne. 😉

    cheers, Swordfish

    so mein freund. ich habs

    schaltjahr =(((jahr%100)%4)&&(jahr%100) || (jahr%100));

    jetzt klappts aucher zeigt schaltjahr 0 an!

    sonst noch fehler?

    ps. ich mach dir ein angebot das du nicht ablehnen kannst 😃 (der pate)

    was bekomm ich dafür ?

    gruß hasso



  • klappt dochnicht ..



  • Prüf mal das:

    #include <stdio.h>
    #include <stdlib.h>
    
    int Schaltjahr(int j)
    {
    	return j%4==0&&j%100||j%400==0;
    }
    
    int korrektesDatum(int t, int m, int j)
    {
    	int tmp[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 
    	tmp[1] = Schaltjahr(j) ? 29 : 28;
    	return  m>=1&&m<=12&&j>=1583&&j<=2399/*oder meht*/&&t>=1&&t<=tmp[m-1];
    }
    
    int main() 
    {
        int tag, monat, jahr;
    
        while (1)
        {
    		printf("Bitte gib ein Datum ein!\n");
            printf("Tag : ");
            scanf("%d", &tag);
            printf("Monat : ");
            scanf("%d", &monat);
            printf("Jahr (jjjj) : ");
            scanf("%d", &jahr);
    		if (korrektesDatum(tag, monat, jahr))
    		{
    			printf ("Datum ok!");
    			break;
    		}
    		else
    		   printf ("Ungültiges Datum\n\n");
       }
       return EXIT_SUCCESS;
    } ;)
    


  • Du bist sooo fiies. Dann muss ich auch...

    #include <stdbool.h>
    #include <ctype.h>
    #include <stdio.h>
    
    void flush_stdin( void );
    
    static char *fehlertext[ ] = {
    
    	"Das angegebene Datum ist gueltig.",
    	"Das Jahr ist ungueltig, da es vor der Einführung des Gregorianischen Kalenders liegt.",
    	"Das angegebene Monat ist entweder 0 oder groesser als 12.",
    	"Es wurde der 29. Februar eines Jahres angegeben, das kein Schaltjahr ist.",
    	"Der angegebene Tag ist entweder 0 oder groesser als das angegebene Monat Tage hat."
    };
    
    typedef enum tag_fehlercode {
    
    	ERRDAT_GUELTIG, ERRDAT_UNGJAHR, ERRDAT_MFEHLER, ERRDAT_KSJAHR, ERRDAT_TFEHLER,
    
    } fehlercode_t;
    
    void flush_stdin( void ) {
    
    	setvbuf( stdin, 0, _IONBF, 0 );
    	setvbuf( stdin, 0, _IOFBF, BUFSIZ );
    }
    
    fehlercode_t pruefung( unsigned int tag, unsigned int monat, unsigned int jahr ) {
    
    	static unsigned char monatstage[ ] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    
    	monatstage[ 1 ] = ( !( jahr % 4 ) && ( ( jahr % 100 ) || !( jahr % 400 ) ) ) ? 29 : 28;
    	return ( jahr < 1582 ) ? ERRDAT_UNGJAHR : ( ( ( monat < 1 ) || ( 12 < monat ) ) ? ERRDAT_MFEHLER : ( ( tag < 1 ) || ( monatstage[ monat - 1 ] < tag ) ? ( tag == 29 ? ERRDAT_KSJAHR : ERRDAT_TFEHLER ) : ERRDAT_GUELTIG ) );
    }
    
    int main( void ) {
    
    	char puffer[ 12 ] = { 0 };
    	char eingabe = 0;
    	unsigned int tag = 0, monat = 0, jahr = 0;
    
    	do {
    		printf( "Bitte geben Sie ein Datum der Form TT.MM.JJJJ ein: " );
    
    		do {
    			flush_stdin( );
    			fgets( puffer, 11, stdin );
    
    			if( sscanf( puffer, "%u.%u.%u", &tag, &monat, &jahr ) == 3 ) {
    
    				break;
    			}
    
    			printf( "Ihre Eingabe entspricht nicht dem verlangen Format!\n\nBitte wiederholen Sie die Eingabe: " );
    
    		} while( true );
    
    		printf( "%s\n\n", fehlertext[ pruefung( tag, monat, jahr ) ] );
    
    		do {
    			printf( "Soll das Programm wiederholt werden (j/n)?" );
    
    			flush_stdin( );
    			eingabe = tolower( getchar( ) );
    
    		} while( ( eingabe != 'j' ) && ( eingabe != 'n' ) );
    
    		putchar( '\n' );
    
    	} while( eingabe == 'j' );
    }
    

    cheers, Swordfish



  • ich komm mir so vor als wenn ich 2 diamanten habe mit denen ich nichts anfangen kann..

    die schreibweise geht über meinen bisherigen wissenstand hinaus.

    wenn das schon für euch kein problem ist dann könntet ihr meins auch etwas besser machen prüfmodul bzw das alles im hauptprogramm steht.

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>

    int main ()
    
    { // Beginn des Hauptprogramms!
    
    int tag,monat,jahr;
    
    char weiter ='j';
    int schaltjahr; 
    
    //cls
    
    printf("\n \t \t * ~ * W I L K O M M E N * ~ *\n");
    printf("\n\tUm ins Hauptprogramm zu gelangen, druecken Sie eine Beliebige Taste!\n");
    getch();
    //cls
    while(weiter == 'j')  
    {
    
    do
    { 
    
    printf("\n Bitte geben Sie das Datum in der Form TT.MM.JJJJ ein  " );
    
    scanf( "%2u.%2u.%4u", &tag, &monat, &jahr );
    fflush (stdin);
    
    schaltjahr =((jahr%400==0) || (jahr%4==0 && jahr % 100 !=0));
    
    if( (monat ==01 && tag <=31)||   // Solange Bedingungen war wird das Datum ausgegeben!
    (monat ==02 && tag <=28) ||
    (monat ==03 && tag <=31) || 
    (monat ==04 && tag <=30) ||
    (monat ==05 && tag <=31) ||
    (monat ==06 && tag <=30) ||
    (monat ==07 && tag <=31) ||
    (monat ==8 && tag <=31)  ||
    (monat ==9 && tag <=30)  ||
    (monat ==10 && tag <=31) ||
    (monat ==11 && tag <=30) ||							//(monat ==02 && (!(schaltjahr)))||
    (monat ==12 && tag <=31) ||
    ((monat ==02) && (tag ==29)&& (schaltjahr)))
    
    {
    switch(monat)
    { // beginn switch anweisung
    case 01:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. januar.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 02:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. Februar.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 03:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. März.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 04:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. April.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 05:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. Mai.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 06:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. Juni.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 07:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. Juli.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 8:
    	printf(" %i. August.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 9:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. September.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 10:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. Oktober.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 11:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. November.%iund verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    
    	case 12:
    	printf("\nDatum ist Plausibel!\n");
    	printf(" %i. Dezember.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr);
    	break;
    } // ende switch anweisung!
    
    }
    
    else
    
    {
    	printf("\nBitte ueberpruefen Sie ihre Eingabe\nKeine %i. Tage in Monat %i. Jahr %i \n",tag,monat,jahr);// Ausgabe Prüfmodul
    
    }
    
    } while( (monat ==01 && tag >31)||   // Prüfmodul! Solange Bedingung wahr, wird der Vorgang wiederholt!
    	(monat ==02 && tag >29) || 
    	(monat ==02 && tag==29 && (!(schaltjahr)))||
    	(monat ==03 && tag >31) || 
    	(monat ==04 && tag >30) ||
    	(monat ==05 && tag >31) ||
    	(monat ==06 && tag >30) ||
    	(monat ==07 && tag >31) ||
    	(monat ==8 && tag >31)  ||
    	(monat ==9 && tag >30)  ||
    	(monat ==10 && tag >31) ||
    	(monat ==11 && tag >30) ||
    	(monat ==12 && tag >31) ||
    	(monat > 12));    
    
        printf("\n\nWollen Sie den den Prozess wiederholen \nDann taetigen Sie fuer Ja die Taste j und fuer Nein die Taste \n\n");
    	weiter=getch();
    
    	}
    
    return EXIT_SUCCESS; 
    
    } // Ende des Hauptprogrammas!
    


  • #include <stdbool.h> /* für bool */
    #include <stdio.h>
    
    /* #include <stdlib.h> wofür */
    /* #include <math.h> wofür? */
    
    int main( void )
    {
    	/* int tag, monat, jahr; Du sagst unten scanf, dass es unsigned ints einlesen soll, also: */
    	unsigned int tag = 0, monat = 0, jahr = 0;
    	char weiter = 0; /* = 'j'; siehe unten (do...while) */
    	/* int schaltjahr; wenn schon, dann: */
    	bool schaltjahr = false;
    
    	/* und dann noch: */
    	int eingelesen = 0; /* für das Ergebnis von scanf */
    	unsigned int februartage = 0; /* damit's einfacher wird ;) */
    
    	printf("\n \t * ~ * W I L K O M M E N * ~ *\n");
    
    	/* getch(); Unnötiges, nicht Standardkonformes gimmik... */
    
    	/* while( weiter == 'j' || 'J' || 'y' || 'Y' || 1 )  // wird die taste j gedrückt wird der Prozess neugestartet!
    
    		Die Bedingung ist Quatsch mit Soße. Daraus machen wir eine do...while Schleife und sparen uns
    		die künstliche Initialisierung von 'weiter' mit 'j'.
    	*/
    	do {
    
    	/* do
    	   {
    
    		Wofür noch eine Schleife!?
    	*/
    		printf( "\nBitte geben Sie das Datum in der Form TT.MM.JJJJ ein!\n" );
    
    		/*
    		scanf( "%2u.%2u.%4u", &tag, &monat, &jahr );
    		fflush( stdin );
    
    		scanf( "%u.%u.%u", &tag, &monat, &jahr );
    
    		scanf ist Deine Angabe für die Breite der Eingabefelder (%_2_) wurscht.
    		Warum den Eingabestrom _nach_ der Eingabe leeren?
    		stdin fflusht man nicht. Ist undefiniert!
    
    		Eingabestrom leeren: */
    		setvbuf( stdin, 0, _IONBF, 0 );
    		setvbuf( stdin, 0, _IOFBF, BUFSIZ );
    
    		/* einlesen: */
    		eingelesen = scanf( "%u.%u.%u", &tag, &monat, &jahr ); /* scanf gibt die anzahl der erfolgreich gelesenen Werte zurück. */
    
    		/* prüfen: */
    		if( eingelesen == 3 ) { /* Nur wenn Tag, Monat und Jahr erfolgreich gelesen wurden...
    
    			/*
    			schaltjahr = (!(jahr%4 && jahr %100 && jahr%400));
    			schaltjahr =(!(jahr%4));
    
    			Darüber, dass beides Quatsch ist, stimmen wir endlich überein, oder?
    			Also, gaaaanz langsam:
    			*/
    			if( ( jahr % 4 ) == 0 ) { /* Alle Jahre, die durch 4 ohne Rest teilbar sind, sind Schaltjahre */
    
    				schaltjahr = true;
    
    				if( ( jahr % 100 ) == 0 ) { /* Alle Jahre, die durch 100 ohne Rest teilbar sind, sind keine Schaltjahre. */
    
    					schaltjahr = false;
    
    					if( ( jahr % 400 ) == 0 ) { /* Alle Jahre, die durch 400 ohne Rest teilbar sind, sind wiederum Schaltjahre. */
    
    						schaltjahr = true;
    					}
    				}
    			}
    
    			if( schaltjahr ) {
    
    				februartage = 29;
    
    			} else {
    
    				februartage = 28;
    			}
    
    			/*
    			if( ( monat == 01 && tag <= 31 ) ||   // Solange Bedingungen war wird das Datum ausgegeben!
    				( monat == 02 && tag <= 28 ) ||
    				( monat == 03 && tag <= 31 ) ||
    				( monat == 04 && tag <= 30 ) ||
    				( monat == 05 && tag <= 31 ) ||
    				( monat == 06 && tag <= 30 ) ||
    				( monat == 07 && tag <= 31 ) ||
    				( monat == 8 && tag <= 31 ) ||
    				( monat == 9 && tag <= 30 ) ||
    				( monat == 10 && tag <= 31 ) ||
    				( monat == 11 && tag <= 30 ) ||
    				( monat == 12 && tag <= 31 ) ||
    				( ( monat == 02 ) && ( tag == 29 ) && ( schaltjahr ) ) )
    			{
    
    				Was heißt, _solange_ die Bedingung wahr ist? Der Block wird _genau dann_ ausgeführt,
    				wenn die Bedingung war ist. Einmal. Was, wenn 'tag' 0 ist?
    			*/
    
    			if( ( 0 < tag ) &&
    					(
    						( ( monat ==  1 ) && ( tag < 31 ) ) ||
    						( ( monat ==  2 ) && ( tag < februartage ) ) ||
    						( ( monat ==  3 ) && ( tag < 31 ) ) ||
    						( ( monat ==  4 ) && ( tag < 30 ) ) ||
    						( ( monat ==  5 ) && ( tag < 31 ) ) ||
    						( ( monat ==  6 ) && ( tag < 30 ) ) ||
    						( ( monat ==  7 ) && ( tag < 31 ) ) ||
    						( ( monat ==  8 ) && ( tag < 31 ) ) ||
    						( ( monat ==  9 ) && ( tag < 30 ) ) ||
    						( ( monat == 10 ) && ( tag < 31 ) ) ||
    						( ( monat == 11 ) && ( tag < 30 ) ) ||
    						( ( monat == 12 ) && ( tag < 31 ) )
    					)
    				)
    			{
    				/*
    
    					Wenn dieses Mörderding nur dafür da ist, den Monatsnamen auszugeben, dann lass es lieber.
    					Dafür nimmt man ein Array von Zeichenketten und gibt sinngemäß monatsname[ monat ] aus.
    
    					Was soll eigentlich eine Ausgabe wie "x Schaltjahr/e" bedeuten!?
    
    				switch( monat )
    				{
    				case 01:
    					printf( "\nDatum ist Plausibel!\n" );
    					printf( " %i. januar.%i und verfuegt: %i Schaltjahr/e!",tag,jahr,schaltjahr );
    					break;
    
    					...
    				}
    				*/
    
    				printf( "Das Datum %02u.%02u.%04u ist plausibel.\n", tag, monat, jahr );
    
    			}
    			else
    			{
    				printf("\nBitte ueberpruefen Sie ihre Eingabe\nKeine %02u Tage in Monat %02u, Jahr %04u\n", tag, monat, jahr);
    			}
    
    			/*	wie schon gesagt, wofür diese 2. Schleife!?
    
    			} while( (monat ==01 && tag >31)||
    				(monat ==02 && tag >29) ||
    				(monat ==02 && tag==29 && (!(schaltjahr)))||
    				(monat ==03 && tag >31) ||
    				(monat ==04 && tag >30) ||
    				(monat ==05 && tag >31) ||
    				(monat ==06 && tag >30) ||
    				(monat ==07 && tag >31) ||
    				(monat ==8 && tag >31) ||
    				(monat ==9 && tag >30) ||
    				(monat ==10 && tag >31) ||
    				(monat ==11 && tag >30) ||
    				(monat ==12 && tag >31) ||
    				(monat > 12));
    			*/
    
    		} /* if( eingelesen == 3 ) */
    		else
    		{
    			/* Es konnten nicht alle 3 Werte gelesen werden: */
    
    			printf( "Ihre Eingabe entspricht nicht dem Format TT.MM.JJJJ!" );
    		}
    
    		printf( "\n\nWollen Sie den den Prozess wiederholen \nDann taetigen Sie fuer Ja die Taste j und fuer Nein die Taste \n\n" );
    
    		/*	weiter = getch(); 
    			Nicht Standard!
    
    			Eingabepuffer leeren und ein Zeichen lesen:
    		*/
    		setvbuf( stdin, 0, _IONBF, 0 );
    		setvbuf( stdin, 0, _IOFBF, BUFSIZ );
    		weiter = getchar( );
    
    	} while( ( weiter == 'j' ) || ( weiter == 'J' ) );
    
    	/* system("pause"); Funktioniert nur unter DOS und Windows... */
    	getchar( );
    }
    

    Aber schön ist das nicht...

    Was mich die ganze Zeit schon interessiert: Wie lernst Du eigentlich?

    cheers, Swordfish



  • hab das Buch c von anfang an. das ist aber nur für die grundlagen. welches kannst du mir empfehlen um mal so wie du zu programmieren zu können. bzw wie sollt ich vorgehen?

    ps. der compiler gibt ne fehlermeldung :

    kann nicht geöffnet werden: "stdbool.h": No such file or directory

    gruß hasso



  • Hey Hasso,

    ich glaub wir sind im selben Kurs. 😉
    Gib mal deine ICQ oder MSN-Addy, dann kann ich dir wenn du willst dabei helfen. Hab das Programm fertig geschrieben mit den Mitteln die wir bisher hatten.
    Die hier vorgeschlagenen Prgoramme sind zwar alle bestimmt richtig und so, nur viele Dinge davon hatten wir noch nicht...


Anmelden zum Antworten