Array Problem
-
Hallo,
ich habe ein int Array mit einer Kapazität von 41 Einträgen. Jetzt versuche ich nach einer For-Schleifen und einigen Rechnungen das Ergebnis einzutragen und gleichzeitig zu schauen ob das Ergebnis doppelt vorkommt.
Ich dachte mir das so:int s_s[40]; for... ... s_s[B] = s_s[B]+1;
Das Problem dabei ist, dass es nicht zu funktionieren scheint.
Vielleicht kann mir einer ja helfen.
Danke schon mal!
-
Metrickz schrieb:
Das Problem dabei ist, dass es nicht zu funktionieren scheint.
Soso, dann ist ja alles klar.
Dein s_s hat übrigens 40 Einträge.
-
Kannste ma den ganzen Code posten?
-
Ich denke ich weiß was du mit deinem Kommentar meinst.
Der Compiler meckert erstmal nicht, erst wenn ich debugge. Dann kommt ein neues Fenster in dem steht dann "Debug Assertion Failed!
Program:....
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
..."
-
Nein ich meine die ganze for-Schleife
-
@Killur: du warst schneller als ich beim tippen, deswegen hab ich SeppJ gemeint
int s_s[40]; int B; for(vector<f>::iterator u = v.begin(); u != v.end(); u++) { B = sqrt(atan(pow((*u).getD,2)-(*u).getT)); s_s[B] = s_s[B]+1; }
-
mir fällt grad auf bei
(*u).getT
fehlen die Klammern danach.
-
nutzt doch bitte ->
-
s_s[B] = s_s[B]+1;
muss zu
s_s[B] = s_s[B+1];
-
Da veränder ich aber den Wert von B. Ich will nur das der Standartwert 0 an der Stelle B jedesmal eins dazuzählt.
-
int B;
Deklarier Variablen so spät wie möglich, hier wäre das innerhalb der Schleife. Zumindest wenn du nicht nach der Schleife nochmals darauf zugreifst.
for(vector<f>::iterator u = v.begin(); u != v.end(); u++)
u++
erzeugt eine unnötige Kopie (zumindest bei komplexeren Typen). Nimm++u
.s_s[B] = s_s[B]+1;
Ich würde hier
operator++
nehmen.
-
Uteratoren ftw
-
Nein dadurch veränderst du nicht den wert von B. Den veränderst du mit
B = B+1;