ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ホーム > コミュニティ > PC、インターネット > C言語とC++言語 > トピック一覧 > 座標のまとめ方?指定?の方法を...

C言語とC++言語コミュの座標のまとめ方?指定?の方法を教えてください。

  • mixiチェック
  • このエントリーをはてなブックマークに追加

コミュ内全体

初めまして。
高校1年生です。c言語は習いたてです。
よろしくお願いします。

突然ですが、座標のまとめ方(例えば(0,0)〜(5,5)のまとめ?指定?)がわかりません。
簡単なのでしょうか?教えていただけないでしょうか。お願いします。

コメント(4)

c言語に座標なんてないがね。
二次元座標データをプログラム上で扱いたいなら二次元配列を作って管理するのが一般的。
学生さんということだから何かの課題が出ているのだと思いますが、どういう風に手を付けて分からないのなら、まず、うまくまとめようなんて考えないで、知っている範囲で、プログラムにしてみましょう。

次に、すっきりしないなあ、と感じるところがあれば、そこを自分なりに「まとめて」みましょう。構造体を使ってみる、配列を使ってみる、クラスを作ってみる、処理を関数に分けてみる、いろいろなやり方があります。少し例を挙げてみるならば。

特に前提条件無く「座標」と言われたら、

struct Point { double x; double y; };

みたいな単純な構造体で表現することをまず考えるでしょう。

小さな整数に限定して良いなら、

struct Point { int x; int y; };

にするかも知れないし、型を限定したくないなら、とりあえず

template<typename C>
struct Point { C x; C y; };

みたく型はぼかしておいて、細かいことは後で考えよう、ということにするかもしれません。

ともあれ Point 型が定義されれば、頂点の数を限定せずに単なる多角形として頂点の座標を格納するなら

std::vector<Point> polygon_nodes;

でもいいでしょうし、構造体としてまとめるなら、

struct Polygon { std::vector<Point> nodes; };

みたくしてもいいでしょう。

汎用的なn角形である必要は無く、例えば三角形を表現したいというケースなら

struct Triangle {
 std::vector<Point> nodes;
 Triangle() {
  nodes.resize(3);
 }
};

のようにしてデータの持ち方に制約を導入するのもいいと思います。(上の例ははいい加減なものですが、この程度のものでも凝ればいろいろ凝れます。TriangleをPolygonの派生クラスにするという手もありそうですし、vectorはprivateにして要素へのアクセサを別に作るというのは最初に思いつくことかもしれません。最低限、頂点の数は後から変更出来ないようにしたいものですね)

具体的に、こういう課題に対してこんな風に組んでみた、というソースコードを書いて貰えれば、ここはこうした方がいい、とか、ここはどうしてこうなっているの? とか、色々突っ込んで貰えるかもしれませんよ。
>>[3]
わざわざ長文でありがとうございます。まだまだ分らないことだらけですが、色々試してみます。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

C言語とC++言語 更新情報

C言語とC++言語のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング