Ok, werde mir die Stringstreams mal ankucken(noch nie was von gehört
![^^](wcf/images/smilies/squint.png.pagespeed.ce.vVqemmKAwr.png)
).
Die 2te Aufgabe habe ich wegen dem Auslesen aus einer Datei mal ausgelassen.
Hier mal die dritte
Noch mit sprintf())
|
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#include <TriBase.h>
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
//int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int showCmd)
int main()
{
if(tbInit())
tbWriteToLog("TriBase konnte nicht initialisiert werden!");
else
{
tbVector3 *vectors = new tbVector3[5000];
for( int i = 0; i < 5000; i++)
vectors[i] = tbVector3Random();
//3 beliebige herausnehmen
int A = tbIntRandom(0, 4999);
int B = tbIntRandom(0, 4999);
int C = tbIntRandom(0, 4999);
tbPlane plane = tbPlaneFromPoints(vectors[A], vectors[B], vectors[C]);
//´Punkte in Ebene einsetzen.
// Prüfen, ob der Punkt auf oder hinter der Ebene liegt.
// Ergebnis in Logdatei schreiben.
int over = 0;
int under = 0;
for( int i = 0; i < 5000; i++)
{
float result = tbPlaneDotCoords(plane, vectors[i]);
if( result > 0.0f)
over++;
else
under++;
}
char buffer[50];
sprintf(buffer, "%i Vektoren liegen unter der Ebene, %i darüber", under, over);
tbWriteToLog(buffer);
delete[] vectors;
}
tbExit();
return 0;
}
|
Stimmt das so? ungefähr? Es kommen ganz realistische Werte dabei raus:
2402 Vektoren liegen unter der Ebene, 2598 darüber