Programm braucht immer doppelte eingabe obwohl nur eine abfrage abgefragt wird



  • Hallo ich hab 2 Datein wenn ich jetzt bei der kunden.h bin dann wird hier ja abgefragt was man tun möchte, Profil Anschauen oder bearbeiten.

    cout<<"(1) Kunden Profil anschauen: \n"
          "(2) Kunden bearbeiten \n"
          "Auswahl: ";
    
          cin>>auswahl_kunden_funktion;
    
          if (auswahl_kunden_funktion == 1)
          {
          return kunden_profile = true;
          }
    

    Wenn ich hier jetzt eine 1 für Profil anschauen eingebe dann blinkt die Console kurz auf, und dann kommt wieder die selbe abfrage.

    Nach dem ich dann wieder die 1 eingeben habe funktioniert es.

    Woran liegt das ?

    Hat da wer vielleicht eine ahnung ?

    main cpp

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    #include "kunden.h"
    
    int main()
    {
    int auswahl;
    int kunden(bool kunden_profile);
    
    bool kunden_profile;
    
    cout<<"Datenbank \n\n";
    
    cout<<"(1) Kunden \n"
          "(2) Telefonbuch \n\n"
          "Auswahl: ";
    cin>>auswahl;
    
            if (auswahl==1)
            {
            cout<<"\n";
            kunden(0);
            }
    
    if (kunden(0) == true)
    {
    cout<<"profile sind true\n";
    }
    
    return 0;
    }
    

    #include "kunden.h"

    #include <iostream>
    using namespace std;
    
    int kunden(bool kunden_profile)
    {
    
    int auswahl_kunden_funktion;
    
    char *kunden_daten = "kunden.txt";
    string zeilen[256];
    
    ifstream datei;
    datei.open(kunden_daten);
    
       for (int i=0 ; i<20 ; i++)
       {
        datei >> zeilen[i] ;
       }
    
    datei.close();
    
       for (int i=0 ; i<20 ; i++)
       {
    
       cout<<"Zeile"<<": "<<zeilen[i]<<"\n\n";
       }
    
    cout<<"\n";
    cout<<"(1) Kunden Profil anschauen: \n"
          "(2) Kunden bearbeiten \n"
          "Auswahl: ";
    
          cin>>auswahl_kunden_funktion;
    
          if (auswahl_kunden_funktion == 1)
          {
          return kunden_profile = true;
          }
    
    return 0;
    
    }
    


  • könnte es vielelicht daran liegen, dass du die funktion zwei mal aufrufst?



  • Ähm ja -.-

    Stimmt....

    Ich sitz schon wieder zu lange vor dem Kasten ....



  • Aber wieso wird das da 2 mal aufgerufen o_O

    Ich ruf die Funktion doch nur 1 mal hier auf ?

    Ich nehme mal an der springt dann immer wieder hier her:

    if (auswahl==1)
            {
            cout<<"\n";
            kunden();
            }
    

    Aber wieso und wie kann ich das vermeiden ??



  • In jedem Ausdruck, in dem du einen Funktionsaufruf schreibst, wird die Funktion auch aufgerufen, sofern dieser Ausdruck ausgewertet wird. Das bedeutet, ob es nun bei cout oder innerhalb einer if -Klammer steht, ist egal für den Aufruf.

    Verhindern könntest du das, indem du den Rückgabewert der Funktion in einer Variable speicherst und von da an mit dieser Variable arbeitest.


Anmelden zum Antworten