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 gibtok, 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")