anfänger sucht hilfe



  • tachchen erstmal.....

    lerne seit einigen tagen die grundlagen von c++
    habe ein kleines übungstool geschrieben und möchte dieses darufhin erweitern das nach der else cout ausgabe das ganze erneut ausgeführt wird bis eine der if anweisungen erfüllt wird.

    anfänger halt....
    bin für jede hilfe dankbar

    // eröffnung des standartrahmens
    #include <stdio.h>
    #include <iostream>
    // include string für eingabe von ansi zeichenketten
    #include <string>
    using namespace std;
    int main( int nNumberofArgs, char* pszArgs[])
    {

    // abfrage welches spiel gespielt werden soll
    // speichern in szSpiel
    string szSpiel;
    cout <<" welches spiel möchten sie spielen\n\n";
    cout <<" hlepisode1\n";
    cout <<"oder\n";
    cout <<" ut2004\n";
    cin >> szSpiel;

    //flusskontrolle mittels "if"
    if ( szSpiel == "hlepisode1" ) //20
    {
    cout << "eine gute wahl\n\n";
    }

    if ( szSpiel == "ut2004" )
    {
    cout << "alt aber gut\n\n";
    }

    else //30
    {
    cout << "setz deine brille auf und\n";
    cout << "versuche es noch einmal\n";
    }

    system("PAUSE");
    return 0;



  • Hallo,

    Bitte in Zukunft Cpp-Tags benutzen.

    Hier der Code:

    // eröffnung des standartrahmens
    #include <iostream>
    using namespace std;
    int main( int nNumberofArgs, char* pszArgs[]){
        string szSpiel;
        while(szSpiel != "hlepisode1" && szSpiel != "ut2004"){
            // abfrage welches spiel gespielt werden soll
            // speichern in szSpiel
            cout <<" welches spiel möchten sie spielen\n\n";
            cout <<" hlepisode1\n";
            cout <<"oder\n";
            cout <<" ut2004\n";
            cin >> szSpiel;
    
            //flusskontrolle mittels "if"
            if ( szSpiel == "hlepisode1" ){
            cout << "eine gute wahl\n\n";
            }
    
            if ( szSpiel == "ut2004" ){
            cout << "alt aber gut\n\n";
            }
    
            else{
            cout << "setz deine brille auf und\n";
            cout << "versuche es noch einmal\n";
            }
    
        }
        system("PAUSE");
        return 0;
    }
    

    Du kannst übrigens Programme unter Windows[ich schätze einmal das benutzt du] mit WinExec oder ShellExecute aufrufen.

    Beispiel:

    WinExec("C:\\Programme\\UT2004\\System\\UT2004.exe", SW_SHOWNORMAL);

    MFG winexec*



  • Es sollte ausserdem

    else if ( szSpiel == "ut2004" )
    

    heissen, ansonsten bekommt man die letzten Texte auch zu sehen, wenn man "hlepisode1" eingibt.



  • so:

    // #include <stdio.h>
    heißt in C++
    #include <cstdio> // aber wofür?
    
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    // int main( int nNumberofArgs, char* pszArgs[] )
    // brauchst du, da du die Argumente nicht auswertest auch nicht verwenden.
    int main( )
    {
        string szSpiel;
    
        do {
    
            int choice = 0;
    
            cout << " welches spiel möchten sie spielen" << endl << endl;
            cout << " hlepisode1" << endl;
            cout << "oder" << endl;
            cout << " ut2004" << endl;
            cin >> szSpiel;
    
            if( szSpiel == "hlepisode1" ) {
    
                cout << "eine gute Wahl" << endl << endl;
                choice = 1;
    
            } else if( szSpiel == "ut2004" ) {
    
                cout << "alt aber gut" << endl << endl;
                choice = 2;
    
            } else {
    
                cout << "setz deine brille auf und\n";
                cout << "versuche es noch einmal\n";
            }
    
        } while( !choice );
    
        // system( "PAUSE" );
        // eleganter:
    
        cin.clear();
        cin.ignore(std::cin.rdbuf()->in_avail());
        cin.get(); 
    
        // return 0;
        // nicht nötig, da main( ) laut Standard 0 zurückgibt, wenn es nichts zurückgibt.
    }
    

    Greetz, Swordfish



  • danke für die schnellen antworten!

    das mit winexec nimmt meine nächste frage vorweg 🙂

    leider habe ich mit swordfish´s version probleme
    gibt in zeile 42 nen c.2065
    dafür sind die kommentare hilfreich!

    bei winexec´s version das gleiche in zeile 6
    p.s. was genau meinst du mit den c++ tags?

    komme der sache aber näher.......



  • die cpp-tags benutzt du um dein quelltext richtig hier im forum anzuzeigen. einfach mal untem auf den button "C/C++" klicken und dann zwischen die tags dein code eintragen.

    [ cpp ] code [ / cpp ]

    (ohne spaces)

    mfg blan



  • Hallo,

    Swordfish´s choice-variable ist nicht mehr im Gültigkeitsbereich ->

    string szSpiel;
    int choice = 0;
    do {
    ........

    Cpp-Tags bringen ein bisschen syntax highlighting in den Code.

    MFG winexec*



  • danke winexec - damit tut es 🙂
    endlich!!!
    jetzt macht alles sinn 🙂

    10 minuten hier im forum und ich habe mehr gelernt als die gesammte letzte woche.......

    ihr seit genial!
    danke



  • das mit dem winexec / shellexecute befehl klingt gut - aber wie genau kann ich das einfügen?

    // #include <stdio.h>
    // heißt in C++
    #include <cstdio> // aber wofür?

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

    // int main( int nNumberofArgs, char* pszArgs[] )
    // brauchst du, da du die Argumente nicht auswertest auch nicht verwenden.
    int main( )
    {
    string szSpiel;
    int choice = 0;

    do {

    cout << "\nwelches spiel moechten sie spielen" << endl << endl;
    cout << "hlepisode1" << endl;
    cout << "oder" << endl;
    cout << "ut2004" << endl;
    cin >> szSpiel;

    if( szSpiel == "hlepisode1" ) {

    cout << "eine gute Wahl" << endl << endl;
    choice = 1;

    } else if( szSpiel == "ut2004" ) {

    cout << "alt aber gut" << endl << endl;
    choice = 2;
    ShellExecute("D:\\UT2004\\System\\UT2004.exe"); //fehler C8361

    } else {

    cout << "\nsetz deine brille auf und\n";
    cout << "versuche es noch einmal\n";
    }

    } while( !choice );

    // system( "PAUSE" );
    // eleganter:

    cin.clear();
    cin.ignore(std::cin.rdbuf()->in_avail());
    cin.get();

    // return 0;
    // nicht nötig, da main( ) laut Standard 0 zurückgibt, wenn es nichts zurückgibt.
    }



  • und das mit den tags will nicht so wie ich - sorry



  • 10 minuten hier im forum und ich habe mehr gelernt als die gesammte letzte woche.......

    Schau Dir mal diese Tutorials an:
    http://www.henkessoft.de/C++/C++ Fortgeschrittene/C++_Fortgeschrittene.htm#1.1._Tutorials_zum_Einstieg_in_C



  • Hallo,

    #include <windows.h>
    WinExec("D:\\UT2004\\System\\UT2004.exe",SW_SHOWNORMAL);

    Guck dir mal mehrere Tutorials an.

    MFG winexec*



  • #include <windows.h> kann nicht geöffnet werden
    kann es sien das es an der 2005 express version liegt?



  • lobo76 schrieb:

    #include <windows.h> kann nicht geöffnet werden
    kann es sien das es an der 2005 express version liegt?

    Ja, das kann nicht nur sein, sondern is so.
    Du musst das platform sdk installieren, hier im Forum schwirrt irgendwo ne Anleitung rum 😉



  • habs noch mal durch vc 6.0 gejagt und nun funzt es!!!

    danke nochmals für die vielen hilfestellungen



  • MSVC++6 ist nicht standardkonform. Das ist im Sinne von C++ ziemlich lästig. Packe das SDK dazu.



  • @Dr. Erhard Henkes

    dann werde ich wohl die sdk files noch mal ziehen.....
    (war nur ungeduldig)

    p.s. das tutorial vom 04.08 ist mehr als nur interessant!
    geht deutlich tiefer in die materie als die tutorials
    die ich mir bisher vorgenommen habe - merci

    eure hilfestellungen haben mir gestern nen gehörigen motivationsschub
    gegeben.....



  • Entschuldige wegen der Variable choice.

    #include <iostream>
    #include <string>
    
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
    
    #include <shellapi.h>
    
    #pragma comment( lib, "shell32.lib" );
    
    using namespace std;
    
    int main( )
    {
        string szSpiel = "";
    
        do {
            cout << "\nwelches spiel moechten sie spielen" << endl << endl;
            cout << "hlepisode1" << endl;
            cout << "oder" << endl;
            cout << "ut2004" << endl;
            cin >> szSpiel;
    
            if( szSpiel == "hlepisode1" ) {
    
                cout << "eine gute Wahl" << endl << endl;
                choice = 1;
    
            } else if( szSpiel == "ut2004" ) {
    
                cout << "alt aber gut" << endl << endl;
                choice = 2;
    
                ShellExecute( GetConsoleWindow( ), 0, "D:\\UT2004\\System\\UT2004.exe", "", "D:\\UT2004\\System\\", SW_SHOW );
    
            } else {
    
                cout << "\nsetz deine brille auf und\n";
                cout << "versuche es noch einmal\n";
            }
    
        } while( ( szSpiel != "hlepisode1" ) && ( szSpiel != "ut2004" ) );
    
        cin.clear();
        cin.ignore(std::cin.rdbuf()->in_avail());
        cin.get();
    }
    

    Greetz, Swordfish



  • @swordfish

    wieso entschuldigen? habe dadurch immerhin die variable choice kennengelernt
    wobei ich die while zuweisung in deinem neuem beispiel besser finde
    allerdings hat dabei der compiler probleme mit der ShellExecute anweisung
    habe sie duch WinExec ersetzt und es klappt.
    habe vorher auch mit ShellExecute gespielt und dabei mit "ShellExecute(NULL,"open","D:\\UT2004\\System\\UT2004.exe",NULL,NULL,NULL);" erfolg.
    momentan versuche ich das gleiche mit einer batch datei - betonung liegt auf versuche 😉 aber das wird noch (soviel zum motivationsschub)
    irgendwie kann er die .bat datei noch nicht finden

    #include <iostream>
    #include <string>
    #include <windows.h>
    #include <stdlib.h>
    #include <stdio.h>

    using namespace std;

    int main( )
    {
    string szSpiel = "";

    do {
    cout << "\nwelches spiel moechten sie spielen" << endl << endl;
    cout << "hlepisode1" << endl;
    cout << "oder" << endl;
    cout << "ut2004" << endl;
    cin >> szSpiel;

    if( szSpiel == "hlepisode1" ) {

    cout << "eine gute Wahl" << endl << endl;
    system("start c:\\hlepisode1start.bat");
    getchar();

    } else if( szSpiel == "ut2004" ) {

    cout << "alt aber gut" << endl << endl;

    WinExec("D:\\UT2004\\System\\UT2004.exe",SW_SHOWNORMAL);

    } else {

    cout << "\nsetz deine brille auf und\n";
    cout << "versuche es noch einmal\n";
    }

    } while( ( szSpiel != "hlepisode1" ) && ( szSpiel != "ut2004" ) );

    cin.clear();
    cin.ignore(std::cin.rdbuf()->in_avail());
    cin.get();
    }



  • irgendwie stell ich mich mit den c++ tags dämlich an!!!
    will einfach nicht
    sorry


Log in to reply