Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

21.04.2011, 14:22

Problem bei Kapitel 2.2.8 Aufg. 1

Hallo, ich hab mir das Buch vor 3 Tagen gekauft, bisher ging alles tadellos, doch jetzt hab ich ein Problem bei der Aufgabe 1 auf der Seite 98

Allerdings sind meine Kenntnisse in C++ eher miserabel^^

Bei diesem Code wird mir kein Fehler angezeigt aber er tut nicht was er machn sollte(hab den Code teilweise hier aus dem Forum)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <TriBase.h> 
#include <windows.h> 

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int showCmd) 
{ 
tbInit(); 

tbVector3 *vectors = new tbVector3[5000]; 
tbVector3 all; 

float fmin = 0.000; 
float fmax = 10.000; 

for( int i = 1; i < 4999; i++) 
{ 
vectors[i] = tbVector3Random(); 
vectors[i]*tbFloatRandom(fmin, fmax ); 
all += vectors[i]; 
} 

all /= 5000; 

tbWriteToLog("x=%f\ny=%f\nz=%f", all.x, all.y, all.z); 
  
tbExit(); 
}

In der Log Datei steht aber immer

Zitat


INFO: TriBase-Engine wird initialisiert... (tribase.cpp, Zeile 86, Funktion tbInit)

INFO: Initialisierung komplett! (tribase.cpp, Zeile 104, Funktion tbInit)

x=-21474.835938
y=-21474.835938
z=-21474.835938

INFO: TriBase-Engine wird heruntergefahren... (tribase.cpp, Zeile 113, Funktion tbExit)

INFO: Alle Speicherbereiche freigegeben! (tbmemory.cpp, Zeile 116, Funktion tbMemExit)

INFO: Herunterfahren abgeschlossen! (tribase.cpp, Zeile [i]149, Funktion [i]tbExit)[/i][/i]


Ich hoffe jemand kann mir helfen :)

2

21.04.2011, 14:28

Was denkst du was diese Zeile macht?
vectors[i]*tbFloatRandom(fmin, fmax );[/i]
Garnichts,weil der Wert nicht gespeichert wird.

Probier mal statt

C-/C++-Quelltext

1
2
vectors[i] = tbVector3Random();
vectors[i]*tbFloatRandom(fmin, fmax );

das:

C-/C++-Quelltext

1
vectors[i] = tbVector3(tbFloatRandom(fmin,fmax),tbFloatRandom(fmin,fmax),tbFloatRandom(fmin,fmax))

3

21.04.2011, 14:29

ich würde es vor dem tbWriteToLog noch mit sprintf(...) formatieren und dann auf einen Schwung ausgeben.
Metal ist keine Musik sondern eine Religion.

4

21.04.2011, 17:12

geschafft^^

danke damit hats funktioniert:

C-/C++-Quelltext

1
vectors[i] = tbVector3(tbFloatRandom(fmin,fmax),tbFloatRandom(fmin,fmax),tbFloatRandom(fmin,fmax))

ich hab auch das mit dem sprintf() probiert aber da kam immer eine Fehlermeldung, (liegt vllt daran das ich das nicht ganz richtig mache)

außerdem war diese Zeile auch Falsch :D

C-/C++-Quelltext

1
all += vectors[i];


als ich das "+" entfernte wurde das in die Log geschrieben
"
[b]INFO:
TriBase-Engine wird initialisiert... (tribase.cpp, Zeile 86, Funktion tbInit)

INFO: Initialisierung komplett! (tribase.cpp, Zeile 104, Funktion tbInit)

x = 0.000207; y = 0.000808; z =0.001522

INFO: TriBase-Engine wird heruntergefahren... (tribase.cpp, Zeile 113, Funktion tbExit)
[/b]
INFO: Alle Speicherbereiche freigegeben! (tbmemory.cpp, Zeile 116, Funktion tbMemExit)

INFO: Herunterfahren abgeschlossen! (tribase.cpp, Zeile 149, Funktion tbExit)

"

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

5

21.04.2011, 17:24

C-/C++-Quelltext

1
2
3
4
5
6
for( int i = 1; i < 4999; i++) 
{ 
vectors[i] = tbVector3Random(); 
vectors[i]*tbFloatRandom(fmin, fmax ); 
all += vectors[i]; 
}


Ich kenne jetzt die Aufgabe nicht und es kann sein, dass das durchaus beabsichtigt ist, aber dennoch merke ich es mal lieber an.
Das erste Element eines Arrays ist [0]. Dieses erhält in deinem Fall keinen Wert. Das letzte Element deines Arrays ist [4999], welches aber durch die i < 4999-Bedingung auch keinen Wert erhält.
Wie gesagt: Möglicherweise ist das beabsichtigt, weil die Aufgabe es verlangt; möglicherweise aber auch nicht ;).

6

21.04.2011, 17:28

mhh ach so ist das , also es ist nicht beabsichtigt, habs geändert^^

Danke

Werbeanzeige