[C++] Funkcja nie działa poprawnie.
Ostatnio zmodyfikowano 2012-11-17 22:11
Bane Temat założony przez niniejszego użytkownika |
[C++] Funkcja nie działa poprawnie. » 2012-11-17 22:11:38 Witam, Zaimplementowałem algorytm z tej strony http://www.algorytm.org/geometria-obliczeniowa/porzadkowanie-wierzcholkow-wg-rosnacych-katow-nachylenia-ich-wektorow-wodzacych.html I wg mnie jest on poprawnie zaimplementowany a wynik jest zły. Oto mój kod. #include <iostream> #include <vector> #include <fstream> #include <cmath>
using namespace std; int i, j; class Point { public: signed int x, y, z; float itsAngle; };
void SetAngle( Point setOfPoints[], int numOfPoints ) { int d[ numOfPoints ]; for( i = 1; i < numOfPoints; i++ ) { if( setOfPoints[ i ].y == 0 ) { if( setOfPoints[ i ].x > 0 ) { setOfPoints[ i ].itsAngle = 0; } else { setOfPoints[ i ].itsAngle = 180; } } else { d[ i ] = abs( setOfPoints[ i ].x ) + abs( setOfPoints[ i ].y ); if( setOfPoints[ i ].x >= 0 ) { if( setOfPoints[ i ].y > 0 ) { setOfPoints[ i ].itsAngle = setOfPoints[ i ].y / d[ i ]; } else { setOfPoints[ i ].itsAngle = 4 +( abs( setOfPoints[ i ].y ) / d[ i ] ); } } else { if( setOfPoints[ i ].y > 0 ) { setOfPoints[ i ].itsAngle = 2 -( setOfPoints[ i ].y / d[ i ] ); } else { setOfPoints[ i ].itsAngle = 2 +( abs( setOfPoints[ i ].y ) / d[ i ] ); } } cout << "ustawiono itsAngle[" << i << "] na " << setOfPoints[ i ].itsAngle << endl; } } } int main() { int numOfPoints; ifstream fin( "zbior.txt" ); fin >> numOfPoints; fin.ignore( 2, '\n' ); cout << numOfPoints << endl; Point setOfPoints[ numOfPoints ]; for( i = 0; i < numOfPoints; i++ ) { fin >> setOfPoints[ i ].z >> setOfPoints[ i ].x >> setOfPoints[ i ].y; fin.ignore( 2, '\n' ); cout << setOfPoints[ i ].z << setOfPoints[ i ].x << setOfPoints[ i ].y << endl; } fin.close(); SetAngle( setOfPoints, numOfPoints ); return 0; }
Proszę o pomoc. |
|
« 1 » |