Programm schließt nach Ausführen



  • Wait() sollte das Schließen eigentlich verhindern.
    Benutze Dec-C++ 4.9.9.2

    Code:

    #include <iostream>
    
    using namespace std;
    
    void wait ()
    {
        cin.clear();
        cin.ignore(cin.rdbuf()->in_avail());
        cin.get();
    }
    
    int main()
    {
    
             int iDim;
    
             cout << "Dimension der Matrix?" << endl;
             cin >> iDim;
    
    //Matrix allokieren
             int **aMatrix = new int* [iDim];         
             for (int i=0; i < iDim; i++)
             {
                 aMatrix[i] = new int [iDim];
             }
    
             for (int i=0; i < iDim; i++)
             {
                          for (int j=0; i < iDim; j++)
                          {
                              aMatrix[i][j] = j+1;
                              cout << aMatrix[i][j] << " ";
                          }
                          cout << "\n";
             }
    
    //Speicher freigeben         
             for (int i=0; i < iDim; i++)
             {   
                 delete [] aMatrix[i];
             }
             delete [] aMatrix;
    
             wait();
    
    return 0;
    }
    


  • Diotor schrieb:

    Wait() sollte das Schließen eigentlich verhindern.
    ...

    Danke für die Information.
    Simon



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wow! C++-Code, formatiert als C++/CLI, und das im MFC-Forum. Nicht schlecht... 😃 😉

    Diotor schrieb:

    Wait() sollte das Schließen eigentlich verhindern.
    ...

    Tut es auch. Du hast in dieser Zeile einen Fehler, der das Programm zum Absturz bringt:

    for (int j=0; i < iDim; j++)
    

    (Tipp: 'i' und 'j' sehen sehr ähnlich aus 😉 )

    Wenn man diesen behebt, verhält sich das Programm wie gewünscht (und hält auch am Ende an).



  • Schonmal danke, das Programm hält aber trotzdem nicht an



  • nutz den debugger



  • Hm, probier mal Folgendes:

    void wait() {
      while((c=getchar())!=EOF && c!='\n');
      getchar();
    }
    

    Oder noch besser: prober mal 'nen anderen Compiler!



  • Das Problem ist, dass der Codeausschnitt nicht zuverlässig funktioniert (uns es laut Standard wohl auch nicht muss). Nimm stattdessen folgendes:

    void wait ()
    {
        cin.clear();
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        cin.get();
    }
    

    Leider verhallen meine Rufe, die FAQ zu korrigieren, seit Jahren ergebnislos.

    EDIT: size_t -> std::streamsize



  • Danke jetzt funktionuert es 👍


Log in to reply