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

MikeL

Frischling

  • »MikeL« ist der Autor dieses Themas

Beiträge: 21

Beruf: Einzelhandelskaufmann

  • Private Nachricht senden

1

12.03.2011, 22:48

Aufgabe 2.2.8

Nabend zusammen,

habe da grade mal ein kleines Verständnis problem was diese Aufgabe und den Parameterlosen Konstruktor angeht der Klasse tbVector3.
Wenn ich den Parameterlosen Konstruktor nutze som liegen die Werte von x und z zwischen 0 und 20 Plus/Minus der y-Wert sowie die Länge nehmen dann eine Dimension ein die mir doch ein Wenig merkwürdig vorkommt
Kann mir jemand zu diesen Seltsamen Ergebnissen etwas sagen?

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
27
tbVector3 vResult(0.0f, 0.0f, 0.0f);
        
        //tbVector3 vResult;
        tbWriteToLog("Vector vResult ist: \n");
        tbWriteVector3ToLog(vResult);
        int numberOfElements = 5000;

        for(int i =0; i<numberOfElements; i++) {
            tbVector3 vRandom = tbVector3Random();
            tbWriteToLog("Wert von Vector vRandom: \n");

            tbWriteVector3ToLog(vRandom);
            float fWert = tbFloatRandom(1.0f, 10.0f);

            tbWriteToLog("\nWert von fWert: %f.10\n", fWert);
            
            vRandom *= fWert;

            vResult += vRandom;
            tbWriteToLog("Vector vResult ist: \n");
        tbWriteVector3ToLog(vResult);
        }
        tbWriteToLog("Vector vResult nach der Schleife: \n");
        tbWriteVector3ToLog(vResult);
        
        vResult = vResult / 5000;
        tbWriteVector3ToLog(vResult);


Der Quelltext dazu. Die Zeile die das Komische Ergebnis liefert ist auskommentiert.
Achja nicht wegen den vielen tbWriteToLog wundern. Bin noch Java gewohnt und habe gelernt beim anwenden neuer Funktion immer mal Kontroll Ausgaben machen zu lassen um zu sehen was wirklich Passiert.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

12.03.2011, 23:27

das ist c++ ^^
wenn du immer mit 0 initialiseren willst musst du dich selbst darum kümmern.
tbVector.h zeile 54:

C-/C++-Quelltext

1
tbVector3():x(0.f),y(0.f),z(0.f){}

einfach ändern und das problem ist gelöst. kann natürlich probleme geben wenn du irgendwann doch die alte header verwendest und nicht daran denkst.

edit: willkommen im forum.
anstelle der logs könntest du auch den debuger :love: verwenden. das ist etwas effektiver :thumbsup:
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (12.03.2011, 23:32)


MikeL

Frischling

  • »MikeL« ist der Autor dieses Themas

Beiträge: 21

Beruf: Einzelhandelskaufmann

  • Private Nachricht senden

3

12.03.2011, 23:47

Dank dir NachoMan für die schnelle Antwort.

Was mich allerdings echt an dem Paramterlosen Konstruktor wundert ist das die Parameter x und z mit einer Zahl belegt werden die doch recht "klein" sind im vergleich zu den y Parameter und der Länge.
Weisst du warum der dann solche Extreme setzt statt auch die in einem Maß zu beschränken die noch im Rahmen des Menschlichen sind?

Das mit dem Debugger werde ich jetzt mal öfter nutzen. Muss dir zustimmen das der Effektiver ist und auch Praktischer letztlich.

Danke dir für die Antwort und das Willkommen heisen im Forum

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

12.03.2011, 23:51

Was mich allerdings echt an dem Paramterlosen Konstruktor wundert ist das die Parameter x und z mit einer Zahl belegt werden

das liegt daran, dass der speicher einfach belegt wird, ohne dass jemand aufräumt. je nachdem was vorher an dieser stelle gespeichert wurde fallen die zahlen groß oder klein aus. ist einfach nur zufall das x und z klein, y aber groß ist. dafür muss ja nur ein bit woanders gesetzt sein.
bei einer solch komplexen sprache wie C++ lohnt sich ein nachschlagewerk wie dieses(oder dieses falls du mit englisch nicht klar kommst) eigentlich immer. überlegs dir mal.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

MikeL

Frischling

  • »MikeL« ist der Autor dieses Themas

Beiträge: 21

Beruf: Einzelhandelskaufmann

  • Private Nachricht senden

5

13.03.2011, 00:02

Ah wieder was dazu gelernt.

Werde mir mal eines von den beiden Zulegen denn düfte nie Falsch sein sowas auch noch im Regal zu haben.
Muss sagen auch wenn es viele Parallelen gibt was die Syntax angeht und den Aufbau von gewissen Funktionen ist C++ doch eine komplett andere Welt in der man noch viel lernen kann.
Aber man lernt ja nie aus am ende.

Werbeanzeige