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
C-/C++-Quelltext |
|
1 2 3 4 5 |
(1.0,2.0,3.0,4.0;5.0,4.0,3.0,2.0;1.0,2.0,3.0,4.0;1.0,2.0,3.0,4.0) (1.0,2.0,3.0) (5.0,4.0,3.0) (2.0,5.0,8.0) (2.0,3.0,4.0) |
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
#include #include using namespace std; int main() { //Aufgabe 1: 5000 Zufallsvektoren mit einer Länge zwischen 0,10 //addieren und durch 5000 rechnen if(tbInit()) { cout << "Fehler bei der TriBase Initialisierung"; return 1 ; } tbVector3 vector[5000]; //5000 stueck erzeugen for(int i = 0; i < 5000; i++) { vector[i] = tbVector3(tbFloatRandom(-5.7, 5.7),tbFloatRandom(-5.7, 5.7),tbFloatRandom(-5.7, 5.7)); } tbVector3 sumVector = tbVector3(0,0,0); for(int i = 0; i < 5000; i++) { sumVector += vector[i]; } sumVector /= 5000; tbWriteVector3ToLog(sumVector); //Aufgabe 2, Transformieren von Vektoren //1 Matrix, x Vektoren einlesen //x Vektoren transformiert schreiben FILE * pFile; char sMystring [100]; string sReadString; //Datei zeile für Zeile lesen float fMatrixValue[16]; float fVectorValue[3]; //Platz fuer 256 Vektoren tbVector3 vVector_a2[256]; tbMatrix mMatrix; tbVector3 vTransformed; int iVectorCount = 0; pFile = fopen ("Eingabe.txt" , "r"); if (pFile == NULL) perror ("Error opening file"); else { int i = 0; //Liest die ersten 100 Zeichen oder es kommt ein Zeilenumbruch while(fgets (sMystring , 100 , pFile) != NULL) { //Das erste Element ist die Matrix if(i++ == 0) { sscanf(sMystring,"(%f,%f,%f,%f;%f,%f,%f,%f;%f,%f,%f,%f;%f,%f,%f,%f)", fMatrixValue[0],fMatrixValue[1],fMatrixValue[2],fMatrixValue[3], fMatrixValue[4],fMatrixValue[5],fMatrixValue[6],fMatrixValue[7], fMatrixValue[8],fMatrixValue[9],fMatrixValue[10],fMatrixValue[11], fMatrixValue[12],fMatrixValue[13],fMatrixValue[14],fMatrixValue[15]); mMatrix = tbMatrix(fMatrixValue[0],fMatrixValue[1],fMatrixValue[2],fMatrixValue[3], fMatrixValue[4],fMatrixValue[5],fMatrixValue[6],fMatrixValue[7], fMatrixValue[8],fMatrixValue[9],fMatrixValue[10],fMatrixValue[11], fMatrixValue[12],fMatrixValue[13],fMatrixValue[14],fMatrixValue[15]); } //Die weiteren sind Vektoren else { if(i > 255) TB_ERROR("Zu Viele Vektoren!",1); sscanf(sMystring, "(%f,%f,%f)",fVectorValue[0], fVectorValue[1], fVectorValue[2]); vVector_a2[iVectorCount++] = tbVector3(fVectorValue[0], fVectorValue[1], fVectorValue[2]); } } fclose (pFile); pFile = fopen ("Ausgabe.txt" , "w"); for(int i = 0; i < iVectorCount; i++) { //Vektor transformieren und direkt in Datei schreiben vTransformed = tbVector3TransformCoords(vVector_a2[i], mMatrix); sprintf(sMystring, "(%f,%f,%f)\n", vTransformed.x, vTransformed.y, vTransformed.z); fputs (sMystring,pFile); } fclose (pFile); } //Enigne herrunterfahren tbExit(); system("pause"); } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »E333« (02.09.2021, 04:08)
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
#include <iostream> #include <TriBase.h> using namespace std; int main() { //Aufgabe 1: 5000 Zufallsvektoren mit einer Länge zwischen 0,10 //addieren und durch 5000 rechnen if(tbInit()) { cout << "Fehler bei der TriBase Initialisierung"; return 1 ; } tbVector3 vector[5000]; //5000 stueck erzeugen for(int i = 0; i < 5000; i++) { vector[i] = tbVector3(tbFloatRandom(-5.7, 5.7),tbFloatRandom(-5.7, 5.7),tbFloatRandom(-5.7, 5.7)); } tbVector3 sumVector = tbVector3(0,0,0); for(int i = 0; i < 5000; i++) { sumVector += vector[i]; } sumVector /= 5000; tbWriteVector3ToLog(sumVector); //Aufgabe 2, Transformieren von Vektoren //1 Matrix, x Vektoren einlesen //x Vektoren transformiert schreiben FILE * pFile; char sMystring [100]; string sReadString; //Datei zeile für Zeile lesen float fMatrixValue[16]; float fVectorValue[3]; //Platz fuer 256 Vektoren tbVector3 vVector_a2[256]; tbMatrix mMatrix; tbVector3 vTransformed; int iVectorCount = 0; pFile = fopen ("Eingabe.txt" , "r"); if (pFile == NULL) perror ("Error opening file"); else { int i = 0; //Liest die ersten 100 Zeichen oder es kommt ein Zeilenumbruch while(fgets (sMystring , 100 , pFile) != NULL) { //Das erste Element ist die Matrix if(i++ == 0) { sscanf(sMystring,"(%f,%f,%f,%f;%f,%f,%f,%f;%f,%f,%f,%f;%f,%f,%f,%f)", &fMatrixValue[0],&fMatrixValue[1],&fMatrixValue[2],&fMatrixValue[3], &fMatrixValue[4],&fMatrixValue[5],&fMatrixValue[6],&fMatrixValue[7], &fMatrixValue[8],&fMatrixValue[9],&fMatrixValue[10],&fMatrixValue[11], &fMatrixValue[12],&fMatrixValue[13],&fMatrixValue[14],&fMatrixValue[15]); mMatrix = tbMatrix(fMatrixValue[0],fMatrixValue[1],fMatrixValue[2],fMatrixValue[3], fMatrixValue[4],fMatrixValue[5],fMatrixValue[6],fMatrixValue[7], fMatrixValue[8],fMatrixValue[9],fMatrixValue[10],fMatrixValue[11], fMatrixValue[12],fMatrixValue[13],fMatrixValue[14],fMatrixValue[15]); } //Die weiteren sind Vektoren else { if(i > 255) TB_ERROR("Zu Viele Vektoren!",1); sscanf(sMystring, "(%f,%f,%f)",&fVectorValue[0], &fVectorValue[1], &fVectorValue[2]); vVector_a2[iVectorCount++] = tbVector3(fVectorValue[0], fVectorValue[1], fVectorValue[2]); } } fclose (pFile); pFile = fopen ("Ausgabe.txt" , "w"); for(int i = 0; i < iVectorCount; i++) { //Vektor transformieren und direkt in Datei schreiben vTransformed = tbVector3TransformCoords(vVector_a2[i], mMatrix); sprintf(sMystring, "(%f,%f,%f)\n", vTransformed.x, vTransformed.y, vTransformed.z); fputs (sMystring,pFile); } fclose (pFile); } //Enigne herrunterfahren tbExit(); system("pause"); } |
Es waren keine Pointer die ich übergeben habe, daher keine initialisierungZitat
The sscanf function reads data from buffer into the location given by each argument. Every argument must be a pointer to a variable with a type that corresponds to a type specifier in format. The format argument controls the interpretation of the input fields and has the same form and function as the format argument for the scanf function. If copying takes place between strings that overlap, the behavior is undefined.
Werbeanzeige