der Code Teil macht absolut keinen Sinn.
Du benutzt eine while schleife als if abfrage, die allerdings erst anschließend abgefragt wird?
Sollte das Level (warum auch immer) bei niedriger als 1 oder höher als 5 sein, endet das ganze in einer endlos schleife.
Ich denke folgendes war dein Plan...
Code:
#include <iostream>
using namespace std;
// Hauptprogramm
//
int main ()
{
// Variablen
//
int Bonus[5];
int Level;
// Bonuspunkte für jeden Level festlegen
Bonus [0] = 100;
Bonus [1] = 150;
Bonus [2] = 250;
Bonus [3] = 400;
Bonus [4] = 600;
// Level abfragen
if(Level >= 1 && Level <= 5)
{
cout << "Welcher Level: ";
cin >> Level;
// Bonuspunkte anzeigen
//Macht keinen Sinn Level zu reduzieren, ansonsten müsstest du es auch wieder erhöhen
//cout << "Bonuspunkte: " << Bonus[(Level - 1)] << endl;
Level--;
cout << "Bonuspunkte: " << Bonus[Level] << endl;
Level++; //Korrektur
}else
{
//Level ausshalb des array bereichs
}
return 0;
}
der Code Teil macht absolut keinen Sinn.
Du benutzt eine while schleife als if abfrage, die allerdings erst anschließend abgefragt wird?
Sollte das Level (warum auch immer) bei niedriger als 1 oder höher als 5 sein, endet das ganze in einer endlos schleife.
Nope. Seins macht Sinn (im Gegensatz zu deinem) und endet nicht in einer Endlosschleife außer der Nutzer ist so dumm und gibt immer wieder etwas was niedriger als 1 oder höher als 5 ist (und das ist dann auch keine Endlosschleife). So wie er es hat hat der Nutzer keine andere Möglichkeit als etwas zwischen 1 und 5 einzugeben (was wahrscheinlich sein Ziel war). Das die erst anschließend abgefragt wird macht auch Sinn weil Level sonst bei der ersten Abfrage einfach nix ist. Lern doch bitte selbst erstmal die Sprache (oder vielleicht überhaupt wie man programmiert und wie man arrays benutzt) bevor du hier Leute verbessern möchtest.
Edit: Habe mir deins nochmal angeguckt und meine Kommentare hinzugefügt (und deine entfernt).
Quote:
Originally Posted by Elektrochemie
Code:
#include <iostream>
using namespace std;
int main ()
{
int Bonus[5];
int Level;
Bonus [0] = 100;
Bonus [1] = 150;
Bonus [2] = 250;
Bonus [3] = 400;
Bonus [4] = 600;
if(Level >= 1 && Level <= 5) // immer false weil level standartmäßig 0 ist. GJ
{
// auch schön das man erst guckt was das level ist und dann das level abfragt. Logic FTW.
cout << "Welcher Level: ";
cin >> Level;
//natürlich macht es Sinn das Level zu reduzieren sonst lässt er das 0. Element von der Array ungenutzt.
Level--;
cout << "Bonuspunkte: " << Bonus[Level] << endl;
Level++; //Korrektur // <- WARUM ? Er kann doch Level-- so lassen, falls er das später nochmals als index braucht. Nur wenn er es dem Nutzer ausgibt muss er +1 rechnen. Ist aber immer noch besser in einer Funktion die z.B. printLevel() heißt das einmal + 1 zu rechnen anstatt immer Level-- und Level++ oder zur indexierung immer Bonus[Level-1] zu schreiben.
}else{/*blablabla... wird btw immer ausgeführt...*/}
return 0;
}
if(Level >= 1 && Level <= 5) // immer false weil level standartmäßig 0 ist. GJ
Es ist sogar noch schlimmer: Das ist undefiniertes Verhalten, der Compiler darf die Festplatte formatieren. Nicht initialisierte Variablen dürfen nicht gelesen werden. Nur statische und globale Variablen werden mit einem Standardwert gefüllt.
Ich warte immernoch auf den Tag an welchem zB Microsoft wirklich undefiniertes Verhalten implementiert so ganz im Sinne von hier und da mal was löschen, neuen Benutzer anlegen, Hintergrund ändern, Musik abspielen, die Maus spiegeln etc.
Hätte sogar lerneffekt.
//Macht keinen Sinn Level zu reduzieren, ansonsten müsstest du es auch wieder erhöhen
//cout << "Bonuspunkte: " << Bonus[(Level - 1)] << endl;
Gut, dass du den eigentlichen Inhalt dieses Threads nicht einmal gelesen hast. Ansonsten hättest du sogar etwas gelernt. Da steht nämlich schon, warum das seine Richtigkeit hat.
Immer mit der Ruhe, hatte übersehen / nicht realisiert dass der Spieler das Level eintippt.
Dennoch ergibt sich daraus keine Erklärung jemandem der (anscheinend) noch weit am Anfang der Sprache ist einen solchen Code vor zu setzen. Der Code des TE ist 100% korrekt, stilistische Dinge außen vor gelassen.
Um da noch etwa zu sagen:
Das Array könnte man auch anders initialisieren
Code:
const int Bonus[5] = {
100,
150,
250,
400,
500
};
macht aber hier keinen besonderen Unterschied, außer, dass es ein wenig Schreibarbeit abnimmt
Ich persönlich präferiere auch die Usereingaben zu lassen wie sie sind und Änderungen wenn nötig in einer extra Variable zu speichern. In diesem Fall wäre ich aber mit
Das einzige was mich aber an diesem Thread wundert ist, dass sich noch niemand über das "using namespace std;" beschwert hat. Dann hole ich das jetzt nach: das ist ganz böse!
Dennoch ergibt sich daraus keine Erklärung jemandem der (anscheinend) noch weit am Anfang der Sprache ist einen solchen Code vor zu setzen. Der Code des TE ist 100% korrekt, stilistische Dinge außen vor gelassen.
... wenn man, wie ich bereits geschrieben hatte, davon ausging dass das Level übergeben wurde und nicht per cin eingetippt wird, ergibt der Code schon Sinn.
Aber darauf hätte man, ausgehend von meinem Code, auch nicht draufkommen können, wa?
Ersetzt man das cin >>´durch ein cout << und übergibt den Wert, macht das alles Sinn, holy shit.
Bis auf die inkrementierung und dekrementierung, aber ist ja nicht so als hätte ich genau das gleiche wie du ( cout << "Bonuspunkte: " << Bonus[Level - 1] << endl; ) ausgekommentiert (damit er nicht verwirrt) geschrieben.
Welches dann natürlich vom lieben omitma rausgelöscht wurde, nur damit er dann die Inkrementierung ankreiden kann. Herrlich.
Wie man nur aus jedem noch so kleinem Fehler die Scheisse rausflamen kann. Epvp at its best <3
Quote:
Originally Posted by omitma
Lern doch bitte selbst erstmal die Sprache (oder vielleicht überhaupt wie man programmiert und wie man arrays benutzt) bevor du hier Leute verbessern möchtest.
Lustiges Kerlchen bist du. Meld dich wenn ein Spiel von dir bei Steam Greenlight bekommt, dann reden wir weiter
[Frage] dword to Array of Bytes 11/26/2013 - AutoIt - 1 Replies Hey elitepvpers,
gibt es eine UDF mit der man eine dword value in AoB umwandeln kann.
wie 2000000 zu \x02\x00\x00\x00\x00\x00\x00
Immomemt hab ich nur String to AoB.
Ich danke euch schonmal im voraus für eure Hilfe.
[Frage]File Lines in Array? 02/03/2011 - AutoIt - 4 Replies Hey Com ich hab mal ne Frage undzwar wie ich die Lines aus einer File auslesen und den Inhalt sowie die Anzahl in ein Array schreiben kann.
Hab leider noch nicht allzuviel mit Arrays gearbeitet.
MfG,
BlackHybrid
java - switch -> case frage [array] 12/29/2010 - General Coding - 6 Replies hey hey...
hab ein kleines problem, mit der switch - case abfrage mit nutzen von arrays...
switch (zuf){
case wetten:uebereinstimmungen = 1;break;
}
zeigt der mir nen fehler an , mit ner einfachen if-abfrage klappt es zwar, aber sieht mit switch-case sauberer aus, da es mehrere sind...