Ok, werde mir die Stringstreams mal ankucken(noch nie was von gehört
).
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