Negative Zahlen in einer Schleife
-
Ich hab noch ein bissl herumgespielt. CGM wird außerhalb der for-Schleife berechnet. Wenn ich diese Berechnung aber auch noch in die Schleife stecke, dann stimmen plötzlich die Ergebnisse. Warum ist das so
Das ist doch eigentlich egal, wann CGM berechnet wird!!lg, freakC++
-
Dein Array A besitzt die Elemente 0..29. Du greifst aber auf das Element A[-15] zu. Dadurch erzeugt Deine Anwendung undefiniertes Verhalten.
-
mmh...und wie vereinbart man ein Variablenfeld von -15 bis 15????
-
gar nicht.
void __fastcall TForm1::FormCreate(TObject *Sender) { int A[30]; int CGM = 587.88; int R = 15; for (int I = 0; I<30; I++) { R=15; A[I] = (CGM * R) / pow(pow(R, 2) + pow(I - 15, 2), 0.75); StringGrid1->Cells[0][0] = "--------------------"; StringGrid1->Cells[1][0] = "Wert für V"; StringGrid1->Cells[0][I+15] = "Y = " + FloatToStr (I - 15); StringGrid1->Cells[1][I+15] = FloatToStrF (A[I], ffNumber, 8, 2); } }
BTW, Was machst Du mit pow(, 0.75)? Riecht ein bisschen nach ziehen von Wurzeln aus negativen Werten.
-
ich seh da keine Wurzeln aus negativen Zahlen! Das ist schon richtig so!!
Vielen Dank für eure Hilfe
lg, freakC++
-
void __fastcall TForm1::FormCreate(TObject *Sender) { int CGM = 587.88;
ISt int nicht ganzzahlig? Vielleicht solltest du mit double arbeiten. Also auch
double A[30]
mfg
-
freakC++ schrieb:
ich seh da keine Wurzeln aus negativen Zahlen! Das ist schon richtig so!!
Vielen Dank für eure Hilfe
lg, freakC++
und was ist das für I<15?
pow(I - 15, 2)
-
So, ne kleine Mathestunde:
Wenn ich eine negative Zahl quadriere, dann kommt immer eine positive Zahl herus!! Daher kann in dieser Funktion keine negative Zahl herauskommen und daher kann ich einen reelen Exponenten nutzen!!!!!A[I] = (CGM * R) / pow(pow(R, 2) + pow(I - 15, 2), 0.75);
So, ich hoffe, dass ihr verstanden habt, dass ich recht habe
lg, freakC++PS: Code Tags ham irgendwie net gefunzt!!!
-
freakC++ schrieb:
PS: Code Tags ham irgendwie net gefunzt!!!
Das liegt an den zusätzlichen Formatierungstags die du im Code hast.
A[I] = (CGM * R) / pow(pow(R, 2) + pow(I - 15, 2), 0.75);
bis bald
akari
-
Entschuldigung, da habe ich wohl nicht richtig hingeschaut.
Wenn ich ein pow sehe denke ich halt nicht an Quadrieren, da das ja der blanke Overkill ist.
-
freakC++ schrieb:
So, ne kleine Mathestunde:
Wenn ich eine negative Zahl quadriere, dann kommt immer eine positive Zahl herus!!Darum ging es doch gar nicht. pow(x,.75) heißt x^(3/4). Die Frage ist doch, ob die Summe der beiden Quadrate, die x bilden negativ wird. Wenn das der Fall ist, ermittelst Du das Kubik von x, welches dann ebenfalls negativ wäre und dann die 4. Wurzel aus dieser negativen Zahl... .
Aber die Summe der beiden Quadrate wird nicht negativ, Braunstein hat wohl übersehen, dass ich die Schleifenvariable bei 0 und nicht bei -15 starten lasse, denn dann hätte er recht!
-
witte schrieb:
Die Frage ist doch, ob die Summe der beiden Quadrate, die x bilden negativ wird.
Hi,
ich will mich ni einmischen, aber wie soll denn aus zwei positiven Werten - die zwangsläufig positiv sind wenn der negative Wert quadriert wird - was negatives werden?
mfg, Micha!
-
Yep, das stimmt. OMG, ich brauche Urlaub!
-
witteDarum ging es doch gar nicht. pow(x,.75) heißt x^(3/4). Die Frage ist doch, ob die Summe der beiden Quadrate, die x bilden negativ wird.
[/quote]
Aber in diesem Fall kann die Summe nicht negativ werden!!! das ist der Knackpunkt!! Sonsthättest du natürlich recht!!lg, freakC++