problem bei for-schleife
-
moin,ich habe folgendes problem bei einer for-schleife
#include<iostream> #include <stdlib.h> #include <complex> using namespace std; int main() { complex <double> c; for((real(c) = -9)&& (imag(c) = -9);(real(c) <9)&&(imag(c)<9);c+=1) { cout << real(c) << " " << imag(c) << endl; } system("pause"); return 0; }leider verteht der dumme kompiler nicht dass er beide (imaginär und reel) teile um 1 erhöhen muss ,wenn ihr euch die ausgabe anguckt sieht ihr dass nur die reel teile um 1 erhöht werden,die imaginär bleiben aber bei -9

warum?
kann mir jd mein source code verbessern?
danke
mfg
-
wie wäre es mit
c += complex<double>(1, 1)?btw. verwende cstdlib und nicht stdlib.h
-
hab ich grade versucht die ausgabe ist so
-9 -9 -8 -8 . . . 1 1 2 2 3 3 . . . etchier gibt der program nur 18 komplexe zahlen (zeilen)aus
was ich eigetnlich will ist so
-9 -9 -9 -8 -9 -7 . . . . -8 -9 -8 -8 -8 -7 . . . 1 -9 1 -8 1 -7 . . . etcalle mögliche kombinationen real teil von -9 bis 9 und imaginär von -9 bis 9
also insgesamt 324 plus die zeile von 0-0 sind dann 323 komplexe zahlen oder (zeilen)
kann mir jd da helfen
mfg
-
Da benötigst du auch zwei verschachtelte Schleifen - in der äußeren zählst du den Realteil hoch, in der inneren den Imaginärteil (oder umgekehrt).
-
wie ? kannste mal das schreiben als source code das mache ich bei jedem versuch falsch,schreib mir nur die schleife
bitte
-
Ich könnte ja sagen - schau in deinem Lehrbuch nach. Aber ich will mal nicht so sein:
for(real(c)=-9;real(c)<=9;real(c)+=1) for(imag(c)=-9;imag(c)<=9;imag(c)+=1) mach was
-
natürlich habe ich vorher im lehrbuch nachgeschaut,ich dachte das solte ich mit dem operator && machen ,jetzt funktioniert danke Cstoll

-
Der operator&& gibt einen boole'schen Wert zurueck - naemlich das logische UND der beiden Argumente, was in der Initialisierung der for-Schleife keinen Effekt hat (das Ergebnis wird nie verwendet). Wer hat dir gesagt dass du op&& verwenden musst?
-
In dem Fall wäre es egal, ob er && oder , verwendet. Beides ist in dem Sinne korrekt. Denn auch der ,-Operator hat einen Rückgabewert, der in dem Fall ignoriert werden würde. Auch x = 0; gibt einen Wert zurück...
-
Fellhuhn schrieb:
In dem Fall wäre es egal, ob er && oder , verwendet. Beides ist in dem Sinne korrekt. Denn auch der ,-Operator hat einen Rückgabewert, der in dem Fall ignoriert werden würde. Auch x = 0; gibt einen Wert zurück...
nein, egal ist es nicht und korrekt auch nicht - auch wenn zufaellig das erwartete ergebnis dabei herauskommt.
denn bei einem ausdruck a && b wird nur a und b ausgewertet wenn a true (also ungleich 0) ist. wenn aber a bereits false (gleich 0) ist, dann wird b gar nicht mehr ausgewertet.in diesem fall sind a und b zuweisungen, dass heisst wenn zuweisung a false liefert wird zuweisung b gar nicht mehr durchgefuehrt.
ein beispiel:
int i, j; for( (i = 1) && (j = 1); i < 5; ++i ) {}dies hat den den effekt, dass i und j mit 1 initialisiert werden. aber eben nur, weil der ausdruck (i = 1) 1 (also ungleich 0 und somit true) liefert. deshalb wird der ausdruck (j = 1) ueberhaupt erst ausgewertet.
anderes beispiel:
int i, j; for( (i = 0) && (j = 0); i < 5; ++i ) {}in dem fall bleibt j uninitialisiert. der ausdruck (i = 0) liefert 0 (also false) und deshalb wird der ausdruck (j = 0) gar nicht mehr ausgewertet.