Mehrere möglichkeiten bei if?



  • hi!

    Ich will eine kleine Funktion in mein Programm einbauen, die Checkt, ob ein Korrektes Datum eingegeben wurde.

    Ich kann jetzt folgendes tun:

    if (strDatumMonat == 1) //Wenn Datum gleich 1 ist
            if(strDatumTag >31) //Prüfe ob Tag Größer als 31 ist. Wenn ja error.
            MessageBox("Falsches Tagesdatum! Bitte nur Zahlen von 1 bis 31!");
            else
            OnWeiterImProgramm();
    

    Das könnte ich jetzt 12 Mal machen, aber ich finde, dann wird alles ein Bisschen unübersichtlich.
    Gibt es nicht eine Möglichkeit zu Prüfen ob 1 oder 3 oder 5 oder 7 usw. im Monatsfeld eingegeben wurde? Dann muss ich nicht alles einzeln machen.

    Danke im Vorraus



  • switch(monat)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
    if(tag <=31) cout<<"jup";
    break;
    case 4:
    case 6:
    case 9:
    case 11:
    if(tag<=30) cout<<"jup";
    break;
    case 2:
    //feburar
    }



  • static int maxTage[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    if( tag <= maxTage[monat - 1] )
    {
        // passt
    }
    


  • #define ISLEAPYEAR(year)  ((!((year) % 4) && (year) % 100) || !((year) % 400))
    
    int iMonth; //der gewünschte Monat
    int iYear;  //das gewünschte Jahr
    int iMax;   //die Maximalen Tage des gewünschten Monats (schaltjahr berücksichtigt)
    
    iMax = 31 - (iMonth == 4 || iMonth == 6 || iMonth == 9 || iMonth == 11) - (3*(iMonth == 2) - (iMonth==2)*ISLEAPYEAR(iYear));
    


  • bool datumIstGueltig(int tag,int monat,int jahr)
    {
     return monat>0&&monat<13&&tag>0&&tag<32&&(tag<31¦¦(monat>7!=monat%2==1))
     &&(monat!=2¦¦(tag<30&&(((jahr%4==0&&jahr%100!=0)¦¦jahr%400==0)¦¦tag<29)));
    }
    


  • @volkard
    Ist deine Leertaste kaputt? 😃



  • Ne, bestimmt ist die Festplatte voll. Deswegen hat er die ganzen "unnötigen" Leerzeichen aus allen seinen Codes verbannt... 😃



  • Original erstellt von HumeSikkins:
    @volkard
    Ist deine Leertaste kaputt? 😃

    gleich in der ersten zeile sind vier stück.
    und drunter hätte jedes weitere leerzeichen nur gestört, wenn es versuchte, den eindruck zu erwecken, man solle solchermaßen mißratenen code lesen.



  • also, ich finde die lösung von <-> echt genial !
    coole, aber einfache formel die maximalen tage zu berechnen !



  • Hallo zusammen,

    Also, ich finde die lösung von <-> echt genial !
    coole, aber einfache formel die maximalen tage zu berechnen !

    Sollte das nicht lieber eine inline-function sein?

    mfg Th3law



  • Ich kann mich noch an diesen schlimmen Code erinnern ...
    Den hast du beim BuhaCoding-Contest abgegeben ...
    Seit dem hab ich dort meinen Job gekündigt. Sowas kann doch keiner lesen ! 😞



  • @th3 law

    ich finde doch nur die idee von <-> bewundernswert.
    nicht wie sie implementiert ist, sondern nur die idee !!


Anmelden zum Antworten