Projekt in Dev-C++



  • Hi,
    ich bin neu hier im Forum und lerne seit 2 Tagen C++. Davor habe ich die Sprache Blitz Basic gelernt.

    Ich habe heute mal einen Rechner programmiert:

    #include<iostream>
    using namespace std;
    int main()
    {
    int zahl1;
    int zahl2;
    string zeichen;
    
    cout<<"Dies ist ein Rechner\n\n";
    cout<<"Geben sie die 1. Zahl ein: ";
    cin>>zahl1;
    
    cout<<"Rechenzeichen (+,-,*,/: ";
    cin>>zeichen;
    
    cout<<"Geben sie die 2. Zahl ein: ";
    cin>>zahl2;
    
    if(zeichen=="+")
    {
    cout<<"Ergebnis:"<<zahl1+zahl2<<"\n ";  
    cin.get();                  
    } 
    else if(zeichen=="-")
    {
    cout<<"Ergebnis:"<<zahl1-zahl2<<"\n"; 
    cin.get();                   
    } 
    else if(zeichen=="/")
    {
    cout<<"Ergebnis:"<<zahl1/zahl2<<"\n";    
    cin.get();                
    } 
    else if(zeichen=="*")
    {
    cout<<"Ergebnis:"<<zahl1*zahl2<<"\n";      
    cin.get();              
    } 
    else
    {
    cout<<"Fehler im Rechenzeichen\n";                 
    } 
    int fensterschliestnicht;
    cin>>fensterschliestnicht;  
    }
    

    Allerdings habe ich noch ein paar Fragen dazu:

    Wie bekomme ich es hin, dass das Fenster am Schluss nicht schließt, sondern erst wenn Enter oder so gedrückt wird.

    Außerdem habe ich danach ein Projekt in Dev-C++ erstellt. Dann kommt automatisch dieser Code:

    #include <windows.h>
    
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
    
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    

    Wo muss ich denn meinen Rechner Code dorf einfügen ?
    mfg
    stabaum-games



  • ohhh da hast du leider keine Win32 Consolenanwendung ausgewählt, weil das ist WinAPI code,also für richtige Windows Fenster, vergiss das erstmal wieder. Zu deiner anderen frage, du kannst es dir ganz einfach machen füge einfach ganz ans ende deines code, da wo enter gedrückt werden soll, folgende codezeile ein

    system("pause");
    

    bei weiteren fragen stehen wir dir gerne zur verfügung



  • Firefighter schrieb:

    ohhh da hast du leider keine Win32 Consolenanwendung ausgewählt, weil das ist WinAPI code,also für richtige Windows Fenster, vergiss das erstmal wieder. Zu deiner anderen frage, du kannst es dir ganz einfach machen füge einfach ganz ans ende deines code, da wo enter gedrückt werden soll, folgende codezeile ein

    system("pause");
    

    bei weiteren fragen stehen wir dir gerne zur verfügung

    Danke ! Ich habe den System-Code eingefügt.
    Aber das was du oben geschrieben hast kapiere ich nicht, sry, könntest du das mal genauer erklären ?
    mfg
    stabaum-games



  • achso, nein ich habe es kapiert.
    ich würde gerne wissen was diese 3 Funktionen bedeuten.

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    


  • Erstens mal sind diese Anweisungen keine Funktionen.
    Mit den Include-Direktiven (die ersten beiden Anweisungen) kannst du Header, also externe Dateien mit Quellcode, einbinden. In deinem Beispiel inkludierst du die Dateien cstdlib und iostream.

    using namespace std; bewirkt, dass du beim Gebrauch von Funktionen und Klassen aus dem Namensraum std das entsprechende Kürzel weglassen kannst (z.B. statt std::string kannst du nur string schreiben).

    Allerdings empfehle ich dir sehr, dir ein gutes Buch bzw. Tutorial anzuschauen, da werden solche Sachen erklärt. Vor allem wäre es lohnenswert, zuerst die wichtigsten Grundlagen zu lernen, und nicht schon nach 2 Tagen C++ beim kleinsten Problem aufzugeben.



  • die ersten beiden zeilen sind sogenannte präprozessoren, das bedeutet das sind große Bibliotheken indenen bestimmte funktionen implementiert sind, die du in deinem code benutzt.
    das using namespace std; ist ein namensraum, das bedeutet dort sind sogenannte funktionen drinn wie dein cout oder cin... .

    wundern tut mich nur warum dein code funktioniert, oder besser gesagt warum er das string zeichen akzeptiert, weil dafür müsstest du noch string includieren,d.h.

    am anfang noch #include<string> schreiben...eigenartig



  • Nur damit keine Missverständnisse entstehen:

    Firefighter schrieb:

    die ersten beiden zeilen sind sogenannte präprozessoren, das bedeutet das sind große Bibliotheken indenen bestimmte funktionen implementiert sind, die du in deinem code benutzt.

    Die ersten beiden Zeilen sind Präprozessor-Direktiven. Der Präprozessor ist keine grosse Bibliothek, sondern der Teil der Compiler-Entwicklungsumgebung, der den Code zusammenfügt und für die Kompilierung vorbereitet. #include ist nur eine von vielen Anwendungsmöglichkeiten der Präprozessor-Direktiven. Was du mit grossen Bibliotheken meintest, sind wohl die Headerdateien selber.

    Firefighter schrieb:

    das using namespace std; ist ein namensraum, das bedeutet dort sind sogenannte funktionen drinn wie dein cout oder cin... .

    using namespace std; ist ausschliesslich die Anweisung, den Namensraum std zu nutzen, und nicht der Namensraum selber.



  • gut danke für die verbesserung 🙂



  • Nimm lieber char, da du ja nur die Rechenzeichen haben willst!


Log in to reply