|
You last visited: Today at 18:54
Advertisement
Frage Array
Discussion on Frage Array within the C/C++ forum part of the Coders Den category.
03/19/2014, 18:38
|
#1
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
Frage Array
Heey,
ich wollte Fragen warum ein Level-- zur Index Korregatur an die jeweilige Stelle hingehört.
Wird mit dem Level-- nur noch von 0 bis 4 gezählt oder wie??
- Also Passe ich das Level dem Array an -
Code:
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
do
{
cout << "Welcher Level: ";
cin >> Level;
} while (Level < 1 || Level > 5);
// Bonuspunkte anzeigen
Level--; // Index korrigieren
cout << "Bonuspunkte: " << Bonus[Level] << endl;
return 0;
}
|
|
|
03/19/2014, 19:07
|
#2
|
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
|
Level-- := (Level = Level-1)
Also ja.
|
|
|
03/19/2014, 19:08
|
#3
|
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
|
Quote:
Originally Posted by KingwondA
Wird mit dem Level-- nur noch von 0 bis 4 gezählt oder wie??
- Also Passe ich das Level dem Array an -
|
Ja sonst würdest du ja von 1 - 5 Zählen jedoch fangen Arrays bei 0 an.
|
|
|
03/19/2014, 23:44
|
#4
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
Danke, ich wollte nur noch mal auf Nummer sicher gehen 
Nicht dass ich mir was falsches anlerne.
|
|
|
03/20/2014, 16:38
|
#5
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
Code:
// Level abfragen
do
{
cout << "Welcher Level: ";
cin >> Level;
} while (Level < 1 || Level > 5);
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;
}
|
|
|
03/20/2014, 17:10
|
#6
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Quote:
Originally Posted by Elektrochemie
Code:
// Level abfragen
do
{
cout << "Welcher Level: ";
cin >> Level;
} while (Level < 1 || Level > 5);
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;
}
|
|
|
|
03/20/2014, 17:42
|
#7
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Quote:
Originally Posted by omitma
Code:
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.
|
|
|
03/20/2014, 17:50
|
#8
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
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.
|
|
|
03/20/2014, 17:51
|
#9
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
|
Originally Posted by Elektrochemie
//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.
|
|
|
03/20/2014, 21:54
|
#10
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
Immer mit der Ruhe, hatte übersehen / nicht realisiert dass der Spieler das Level eintippt.
|
|
|
03/21/2014, 13:26
|
#11
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
Quote:
Originally Posted by Elektrochemie
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
Code:
cout << "Bonuspunkte: " << Bonus[Level - 1] << endl;
da ran gegangen.
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!
|
|
|
03/21/2014, 17:18
|
#12
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,832
Received Thanks: 4,152
|
Quote:
Originally Posted by Tyrar
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
|
|
|
03/21/2014, 17:41
|
#13
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Schwanzvergleich hard?
Ich denke hier ist alles geklärt.
|
|
|
 |
Similar Threads
|
[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] String zu Array of Byte
02/28/2012 - AutoIt - 1 Replies
- Hat sich geklärt. Das Thema kann geschlossen werden -
|
[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...
|
All times are GMT +1. The time now is 18:54.
|
|