###実現したいこと
重心をクラスとコンテナfor文を使って求めたい。
###問題点
重心の値がおかしい。
点の個数を入力してください 3 3点の座標を入力してください 2 3 -1 0 2 6 入力された点の重心は (1,5.59241e+06)
foreach文を学習したばかりなので使い方があっているか心配です。
どこが間違っているか教えてください。
###コード
C++
1//重心をクラスとコンテナfor文を使って求める 2#include<iostream> 3#include<vector> 4//点の定義 5struct Point 6{ 7 double x; //x座標 8 double y; //y座標 9 10 void output() 11 { 12 std::cout<<"("<<x<<","<<y<<")"; //(x座標,y座標) 13 } 14}; 15 16//表示する関数 17void output(std::vector<Point>& pts) 18{ 19 for(Point p:pts){ 20 std::cout<<"("<<p.x<<","<<p.y<<")\n"; 21 } 22} 23 24//重心を求める関数 25Point centroid(std::vector<Point>& points) 26{ 27 int xsum,ysum; //合計 28 Point cent; //重心 29 for(Point x : points){ 30 xsum+=x.x; 31 } 32 cent.x=xsum/points.size(); 33 for(Point y : points){ 34 ysum+=y.y; 35 } 36 cent.y=ysum/points.size(); 37 return cent; 38} 39int main() 40{ 41 int n; 42 std::cout<<"点の個数を入力してください\n"; 43 std::cin>>n; 44 45 std::vector<Point> pts={}; //配列 46 pts.resize(n); //サイズ変更 47 std::cout<<n<<"点の座標を入力してください\n"; 48 for(Point& p:pts){ 49 std::cin>>p.x>>p.y; 50 } 51 52 std::cout<<"入力された点の重心は\n"; 53 Point cent=centroid(pts); //重心を求める関数の呼び出し 54 55 cent.output(); 56 57 return 0; 58}
foreach文? C++にそんなのないよ。
ほんとですか?こちらにのっているのを引用したのですが。。。言い方が違うのかもしれません。間違っていたらすみません。
https://ja.wikipedia.org/wiki/Foreach%E6%96%87#C++
関数 for_each はありますが foreach 文はありません。
わかりました。ありがとうございます。
コンテナfor文 もありません。
回答1件
あなたの回答
tips
プレビュー