至急です。C++でGrahamのアルゴリズムを書こうとしています。以下は、途中まで書いたソースコードです。main文の中の2つ目と3つ目のfor文がコンパイルエラーはないのに実行時に実行されません。
至急です。C++でGrahamのアルゴリズムを書こうとしています。以下は、途中まで書いたソースコードです。main文の中の2つ目と3つ目のfor文がコンパイルエラーはないのに実行時に実行されません。 #include<iostream> #include<cmath> #include<utility> #include<cstdlib> #include<vector> #include"gnuplot.hpp" struct Point{ int x; int y; }; int cmppoint(const void * n1, const void * n2){ if(*(int *)n1 > *(int *)n2){ return 1; } else if(*(int *)n1 < *(int *)n2){ return -1; }else{ return 0; } } int signed_triangle_area(Point a,Point b,Point c){ int j; j = ((b.x-a.x)*(c.y-a.y)) - ((b.x-a.y)*(c.x-a.x)); return j; } int main(){ std::vector<Point>p = {}; for(int i=0;i<12;++i){ Point j; std::cin >> j.x >> j.y; p.push_back(j); } int min = p[0].x; int l = 0; for(int k=0;k<6;++k){ if(min > p[k].x){ min = p[k].x; l = k; } } std::swap(p[0].x,p[l].x); std::swap(p[0].y,p[l].y); std::cout << p[0].x << " " << p[0].y << "\n"; int m[] = {0}; for(int j=0;j<10;++j){ m[j] = signed_triangle_area(p[0],p[j+1],p[j+2]); } for(int j=0;j<10;++j){ std::cout << m[j] << " "; } qsort(m,sizeof(m),sizeof(m[0]),cmppoint); for(int j=0;j<10;++j){ std::cout << m[j] << " "; } Gnuplot plotter; plotter.add_points(p); plotter.draw(); }
ベストアンサー
詳しくは見ていない。 int signed_triangle_area(Point a,Point b,Point c) の計算式は合っています?
質問者からのお礼コメント
もう少し頑張って見ます。
お礼日時:5/25 16:14