If....Vergleichbaren Befehl



  • Hallo!

    ich bin gerade dabei ein Programm zu schreiben und brauche bei folgedem Hilfe.:

    Mir fehlt der Befehl (ich habe keine Ahnung wie er heisst, und funktioniert) bei dem ich so vorgehen kann:

    Wenn (Bedingung)
    Dann (Anweisung)

    Sonst (Bedingung)
    Dann (Anweisung

    Sonst (Bedingung)
    Dann (Anweisung
    .
    .
    .

    Und dass ich diese Kette unendlich weiterführen kann und nicht begrenzt ist!

    Und noch was, wie mache ich, dass das Programm, wenn es fertig ist, wieder von neuem beginnt also im gleichen Consolenfenster (unbemerkt) ?

    D.h. Das Programm sucht die bestimmte Bedinung heraus und gibt mir die Anweisung, anschließend gebe ich eine neue Bedinung und es sucht wieder die Anweisung u.s.w.....

    Wäre schön wenn jemand eine geeignete Verzweigung vorschlagen kann und erklären kann mit einem Beispiel am besten !

    Vielen Dank !!



  • Hmmm,

    schon mit

    if(Bedingung) {
    }
    
    else if(Bedinung) {
    }
    
    else {
    }
    

    probiert?


  • Mod

    Frage 1:
    Du packst die Anweisungen in eine Funktion, dann füllst du ein beliebig großes Array mit Zeigern auf diese Funktion. Dann formulierst du die Bedingungen so, dass sie dir einen Arrayindex berechnen und dann führst du die Funktion an diesem Index aus. Falls die Bedingungen kompliziert sind, bietet sich auch eine komplexere Datenstruktur als ein Array an, zum Beispiel eine (Hash-)map.

    Grundidee verstanden oder nur Bahnhof?

    Frage 2:
    Schleife?



  • Das Funktioniert ja nicht bis "unendlich", und wenn ja wie soll das dann genau aussehen, if - elseif- else... und dann? wieder mit if beginnen aber ich glaube das funktioniert nicht



  • Pratwa schrieb:

    Und noch was, wie mache ich, dass das Programm, wenn es fertig ist, wieder von neuem beginnt also im gleichen Consolenfenster (unbemerkt) ?

    Mach eine Schleife in deiner main um den Hauptteil deines Programms.



  • ja, bahnhof 🙂 mit array etc. kenn ich mich nicht aus 😞 wollte das eig mit ner schleife hinbekommen, if - else, while,for oder so was, also nichts hochkomplexes bitte danke 😉



  • Pratwa schrieb:

    Das Funktioniert ja nicht bis "unendlich", und wenn ja wie soll das dann genau aussehen, if - elseif- else... und dann? wieder mit if beginnen aber ich glaube das funktioniert nicht

    Nur Mut, du wirst es schon schaffen unedlich viele verschieden Bedingungen zu stellen.

    Und es ist if else if , mit Leerzeichen zwischen else und if.



  • Pratwa schrieb:

    Das Funktioniert ja nicht bis "unendlich", [...]

    Ist der Speicher deines Rechners endlich?

    Pratwa schrieb:

    und wenn ja wie soll das dann genau aussehen, if - elseif- else... und dann?

    if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else {
    
        /* ... */
    
    }
    

    Für unendlich viele hab' ich im Moment keine Zeit - mach' ich dann später ...



  • So danke Swordfish, mit der Schleife in der main hab ich nicht verstanden um das programm wieder zu starten . . .. .
    Beispeil bitte

    herzlichen dank


  • Mod

    Da du ja anscheinend eine Komplettlösung suchst: Beschreib mal den geplanten Programmverlauf, dann bekommst du dein Beispiel maßgeschneidert.



  • Pratwa schrieb:

    So danke Swordfish, mit der Schleife in der main hab ich nicht verstanden um das programm wieder zu starten . . .. .
    Beispeil bitte

    herzlichen dank

    do
    {
    
      Was immer du auch für Code brauchst um deine Werte einzulesen bitte hierhin
    
      if( /* ... */ ) {
    
        /* ... */
    
      } else if( /* ... */ ) {
    
        /* ... */
    
      } else {
    
        /* ... */
    
      }
    
    } while (1);
    


  • ok, Beispiel:

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    int main(int argc, char *argv[])
    {
    
    if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    }
    
    system("Pause";
    return 0;
    }
    


  • Pratwa schrieb:

    ok, Beispiel:

    #include <cstdlib>
    #include <iostream>
    

    Falsche Sprache. Hier ist C 🙂



  • ja sry..

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    int main(int argc, char *argv[])
    {
    int ki, kd;
       scanf("%d",&ki);
       scanf("%d",&kd);
    
    if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    
    } else if( /* ... */ ) {
    
        /* ... */
    }
    
    system("Pause";
    return 0;
    


  • #include <stdlib>
    #include <stdio>
    
    int main( void )
    {
        int ki = 0;
        int kd = 0;
    
        if( scanf( "%d", &ki ) != 1 ) {
    
            /* Fehlerhafte Eingabe */
            return EXIT_FAILURE;
        }
    
        if( scanf( "%d", &kd ) != 1 ) {
    
            /* Fehlerhafte Eingabe */
            return EXIT_FAILURE;
        }
    
        do {
            if( /* ... */ ) {
    
                /* ... */
    
            } else if( /* ... */ ) {
    
                /* ... */
    
            } else if( /* ... */ ) {
    
                /* ... */
    
            } else if( /* ... */ ) {
    
                /* ... */
            }
    
        } while( 1 );
    }
    


  • Herzlichen Dank an Alle!

    Gelöst... 👍



  • Hmm,

    ich wollte es so haben:

    scanf("%d",&ki);
    scanf("%d",&kd);

    Das heisst man gibt 2 unterschiedliche Werte ein, diese sollen auch so berücksichtigt werden.

    Dann
    .
    .
    .

    if((ki==4,5) && (kd==2,3) {

    printf("True\n");

    } else if((ki==1,6) && (kd==9,11){

    printf("False\n");
    .
    .
    .

    Dass heisst.... man gibt 2 Werte am Anfang ein und in jeder Bedinung steht eine andere Kombination (kd,ki).

    Z.B.
    ki==4,5 && kd==2,3 -> True
    ki==1,6 && kd==1,3 -> False
    ki==0 && kd==23,44,45 -> False

    Kann das so wer lösen, von Zeile 1 ab (also ab inlcude :)) ?



  • #include <stdlib>
    #include <stdio>
    
    int main( void )
    {
        int ki = 0;
        int kd = 0;
    
        if( scanf( "%d", &ki ) != 1 ) {
    
            /* Fehlerhafte Eingabe */
            return EXIT_FAILURE;
        }
    
        if( scanf( "%d", &kd ) != 1 ) {
    
            /* Fehlerhafte Eingabe */
            return EXIT_FAILURE;
        }
    
        do {
            if( ( ki == 4 | ki == 5 ) && ( kd == 2 || kd == 3 ) ) {
    
                /* ... */
    
            } else if( ( ki == 1 || ki == 6 ) && ( kd == 1 || kd == 3 ) ) {
    
                /* ... */
    
            } else if( !ki && ( kd == 23 || kd == 44 || kd == 45 ) ) {
    
                /* ... */
    
            } /* what */ else /* ? */ {
    
                /* ... */
            }
    
        } while( 1 );
    }
    


  • da ist leider ein fehler, wenn es so z.B. ist

    Eingabe war kd 23 und kd 45

    ..
    } else if( !ki && ( kd == 23 || kd == 44 || kd == 45 ) ) {
     printf("true\n");
    ..
    

    schreibt er "unedliche" male true, ich wollte aber nur das das programm von neuem mit scanf anfängt und nicht true immer wieder wiederholt...



  • Edit ki23 nicht kd...


Log in to reply