I dont understand the code



  • das ist die Aufgabe: http://puu.sh/jLEQI/0eb5a4f88c.jpg
    naja ich kam dort nicht weiter und hab mir die lösung aus dem internet geholt,

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        // Read init information from standard input, if any
        int r,l,g;
        cin>>r;         //length of platform
        cin>>g;         //lenth of the gap
        cin>>l;         //length of Landing platform
        int d,crit;
    
        int s,x;
        while (1) {
    
            cin>>s;         //Current Speed
            cin>>x;         //Current position
            d=r-x;  
    
            //incase if you are already on high speed
            crit=0;
            for(int i=0;i<s;i++)
            {
                crit+=i;
            }
    
            //inorder to avoid divide by zero exception
            if(s==0)
            {
                cout<<"SPEED"<<endl;
            }
    
            else
            if(x>=r)        //Slow down the speed incase 1st platform is crossed
            {
                cout<<"SLOW"<<endl;    
            }
    
            else
            if(s>=g+d)          //Jump incase speed is enough to cover the remaining distance+gap      
            {
                cout<<"JUMP"<<endl;
            }
    
            else
            if(crit>=l)     //if speed is greater than the minnimum speed required to stop at next platform     
            {
                cout<<"SLOW"<<endl;
            }
    
            //The main logic for increasing speed 
            else
            if(((d%s)+g)>s) 
            {
                cout << "SPEED" << endl;
    
            }
    
            else
            if((d-1)/s==0)
            {
                if((d-1)%s!=0)
                {
                    cout<<"SLOW"<<endl;
                }
            }
    
            else
            {
    
                cout<<"WAIT"<<endl;
            }
    
            }
    
        return 0;
    
    }
    

    ich versteh den code nicht und woher das programm weiß was das für eine variable ist, die sehen mir einfach random zugeordnet aus z.B r=length of platform woher weiß das programm das? oder was macht das hier z.b d=r-x;



  • Lese nach wozu "cin" und "cout" gut sind, auch wie "while", "for ..." und "if...else" funktionieren, dann kommst du dahinter 🙂



  • cin = c input
    cout = c output
    for = schleife syntax for(int x = 0; x operator z;x++ oder x-- --x usw)
    if = bedingung
    while = schleife die läuft bis die bedingung nicht mehr stimmt und es einen break gibt



  • C++Nab schrieb:

    cin = c input
    cout = c output
    for = schleife syntax for(int x = 0; x operator z;x++ oder x-- --x usw)
    if = bedingung
    while = schleife die läuft bis die bedingung nicht mehr stimmt und es einen break gibt

    ok, du hattest ja geschrieben "die sehen mir einfach random zugeordnet aus z.B r=length of platform woher weiß das programm das?" - mit dem Wissen müsstest du jetzt erkennen können, woher das Programm "r=length" kennt



  • Mache Dir den logischen Aufbaue deines Programms bewusst. Zeichne am besten ein Flussdiagramm.

    int main()
    {
        //...
    
        while (true) // Dauerschleife 
        {
            //...
    
            for(int i=0;i<s;i++)
            {
                //...
            }
    
            if(...)
            {
                //...
            }
            else if(...)
            {
                //...
            }       
            else if(...)
            {
                //...
            }       
            else if(...)
            {
                //...
            }
            else if(...)
            {
                //...   
            }
            else if(...)
            {
                if(...)
                {
                    //...
                }
            }
            else
            {           
                //...
            }
        }// end of while
    
        return 0; // Kläre die Frage: Kommst Du hier überhaupt hin? Wenn ja, wie?
    }
    

    http://www.tutorialspoint.com/cprogramming/c_decision_making.htm
    http://www.tutorialspoint.com/cprogramming/c_loops.htm



  • Erhard Henkes schrieb:

    Zeichne am besten ein Flussdiagramm.

    lol



  • Na, immerhin sieben if/(else). Eine while-loop ohne Ausgang. Da lohnt es sich bestimmt über den Aufbau und auch zeitlichen Ablauf (z.B. Reihenfolge der if/else) nachzudenken. Grafisch geht das zumeist anschaulicher, auch wenn das hier für einen geübten Progger einfach zu überblicken ist. 😉

    Dies hier sollte z.B. hinterfragt werden:

    else if(...)
    {
        if(...)
        {
            //...
        }
    }
    

    Hier sollte man ein if einsparen können.

    Ein Ausbruch aus der while-loop mittels break könnte Sinn machen.



  • Naja, das ist sozusagen die Game-Loop, nur das der Spieler in dem Fall dein Programm ist. Der Benutzer gibt die Parameter ein und dein Programm soll versuchen, das Problem zu lösen.

    Was ich bei deinem Beispielprogramm nicht verstehe, ist wie die Win-Condition oder der Failure-State bestimmt wird.



  • C++Nab schrieb:

    das ist die Aufgabe: http://puu.sh/jLEQI/0eb5a4f88c.jpg
    naja ich kam dort nicht weiter und hab mir die lösung aus dem internet geholt,

    Du hast Dir eine Lösung aus dem Internet geholt. Und eine sehr bescheidene noch dazu.
    Das ist IMHO nicht gut für Anfänger.

    Off-topic:
    Woran liegt es nur, dass codingame.com hier gerade so populär ist? (in diesem Fall das Puzzle "Skynet: the Chasm")


Log in to reply