if schleifen



  • tach...

    ...die schleiffe soll nur betreten werden, wenn eines der kriterien zutrifft...

    if(wahl == 'E' || wahl == 'e' || wahl == 'S' || wahl == 's' || wahl == 'B' || wahl == 'b')

    wo steckt der Wurm??



  • zeig mal die definition von wahl, also welcher typ ist es. und wie du wahl eingelesen hast.
    ich sehe da keinen wurm.



  • if(wahl == 'E' || wahl == 'e' || wahl == 'S' || wahl == 's' || wahl == 'B' || wahl == 'b')
    {
    if(wahl == 'E' || wahl == 'e')
    {
    cout << "ID Name Vorname\n";
    while (zaehler != 16)
    {
    cout << id[zaehler] << " " << name[zaehler] << " " << vorname[zaehler] << "\n";
    zaehler++;
    }
    }



  • volkard schrieb:

    zeig mal die definition von wahl, also welcher typ ist es.

    Und jetzt lies noch mal genau durch, was volkard von dir wollte!



  • Ausserdem solltest du für

    if schleifen

    Prügel bekommen. 😉

    Das mit der Prügel nicht so ernst nehmen. Aber wenn du das mal irgend nem Lehrer oder Prof. sagst, bekommste gleich mal drei Dutzend Punkte abgezogen...



  • ja gut merk ich mir...aber darf ich das thema nocheinmal auf meine Frage wechseln?



  • welchen datentyp hat wahl? (frage volkard)



  • char wahl;



  • Und initialisiert wird es wie?

    ps
    Ja ja, die berühmten if Schleifen. 😃



  • char wahl;
    char nochmal = 'j';
    int id[18] = {...};
    char* name[17] = {...};
    char* vorname[17] = {...};

    //Programmwiederhholungs Schleife
    while (nochmal == 'J' || nochmal == 'j')
    {
    //Auswahlmenu
    cout << "Klassen Datenbank\n\n";
    cout << "Datenbank einsehen mit E\nSuchfunktion mit S\nDatenbank Bearbeiten mit B\n";
    cin >> wahl;

    //Datenbank Einsehen
    if(wahl == 'E' || wahl == 'e' || wahl == 'S' || wahl == 's' || wahl == 'B' || wahl == 'b')
    { ...



  • Komisch, bei mir funktioniert das ganz wunderbar! Er geht nur in das If-Statement, wenn einer der Buchstaben gedrückt wurde.

    Kann es sein, dass dein Problem woanders im Code liegt?



  • Das problem lautet "Syntax error at end of input"

    und schon das compilieren geht nicht



  • Gurrnder schrieb:

    tach...

    ...die schleiffe soll nur betreten werden, wenn eines der kriterien zutrifft...

    if(wahl == 'E' || wahl == 'e' || wahl == 'S' || wahl == 's' || wahl == 'B' || wahl == 'b')

    wo steckt der Wurm??

    Moment mal. Was ist jetzt dein Problem?? Ich denke er betritt nur die if-Abfrage nicht. Jetzt sind es plötzlich compilier-Fehler... Was denn nun?



  • das problem wahr das bei richtigeer eingabe immer if und else ausgeführt wurde.. aber das habe ich soeben gelöst.

    thema wechsel

    char* name[17] = { "Andali"}; <-- kann ich den inhalt ändern?

    zB. mit cout << "Geben sie den Namen ein\n";
    cin >> name[zaehler];

    obiges ist was ich geschriben habe .. und nach allem was ich gelernt habe müsste es so stimmen ... aber wenn ich im laufenden programm zu dieser abfrage komme stürzt das proggi ab.



  • ...blödsinn...
    hab nicht richtig gelesen



  • char *name[17] = {"Andali"};
    
    cout << "Eingabe:";
    cin >> name[17];
    

    Auch dieses Beispiel läuft bei mir. Ich frage mich nur, was

    cin >> name[zaehler];
    

    bedeuten soll. Was ist zaehler?



  • der zähler ist eine variabel die ich eingerichtet habe um die id den name und den vornamen einander zuzuordnen

    zaehler = 1

    cout << id[zaehler] << "\t" << name[zaehler] << "\t\t" << vorname[zaehler] << "\n";



  • genauer lautet es

    char* name[17] = { "Andali", "...","...",usw) <-- nicht nnur ein name ausserdem ist es ein zeiger



  • int main(void)
    {
            char name0[20], name1[20], name2[20], name3[20];
    
            char *name[4] = {name0, name1, name2, name3};
    
            cout << "Eingabe0: "; cin >> name[0];
            cout << "Eingabe1: "; cin >> name[1];
            cout << "Eingabe2: "; cin >> name[2];
            cout << "Eingabe3: "; cin >> name[3];
    
            cout << "\nEingabe0 war " << name[0] << endl;
            cout << "\nEingabe1 war " << name[1] << endl;
            cout << "\nEingabe2 war " << name[2] << endl;
            cout << "\nEingabe3 war " << name[3] << endl;
    
            return 0;
    }
    

    Also dieses Beispiel funktoniert. Ist zwar nicht schön, aber funktional. Das folgende Beispiel fliegt bei der letzten Abfrage raus:

    int main(void)
    {
            char *name0, *name1, *name2, *name3;
    
            char *name[4] = {name0, name1, name2, name3};
    
            cout << "Eingabe0: ";  cin >> name[0];
            cout << "Eingabe1: ";  cin >> name[1];
            cout << "Eingabe2: ";  cin >> name[2];
            cout << "Eingabe3: ";  cin >> name[3];
    
            cout << "\nEingabe0 war " << name[0] << endl;
            cout << "\nEingabe1 war " << name[1] << endl;
            cout << "\nEingabe2 war " << name[2] << endl;
            cout << "\nEingabe3 war " << name[3] << endl;
    
            return 0;
    }
    

    Aber warum das so ist, kann ich nicht sagen. Kann das hier mal ein Vollprofi erklären? Wäre sehr interessant zu erfahren.



  • Aber warum das so ist, kann ich nicht sagen.

    wo wird dann den speicher angefordert?
    dass es erst bei der letzten abfrage kracht ist reiner zufall!


Anmelden zum Antworten