• ベストアンサー

C++builder入門とデータベースを扱う計算ソフトをご紹介ください

こんにちは。 私はプログラミングが殆ど未経験の大学生です。 これからC++builderを勉強し始めようと思うのですが、おススメの入門書、勉強に使えるサイト、などありましたら教えてください。 ちなみにプログラミングを始めた動機は卒論で必要な計算を簡単にしたいと思ったからです。。 二次平面上の4000個ほどある点の、全ての組み合わせの距離の中から、ある範囲内のものを全て見つけ出したいのです。 実は僕の一番の目的はこの計算を楽に簡単に行うことの方です。なので理想はこの計算が出来るソフトをダウンロードするか、似たソフトを拾って来てちょろっと改造することです。 どなたか、こんなことが出来るソフトをご存知でしたら、是非教えて頂きたいです。こっちの質問の方が僕にとって大事なのでよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • equinox2
  • ベストアンサー率48% (321/660)
回答No.1

>二次平面上の4000個ほどある点の、全ての組み合わせの距離 点の座標(X,Y)はどのようにして取得するのでしょうか? EXCELのデータやテキストファイルなどで取得できるのなら、簡単な プログラムで計算することができます。 以下は、読み込みがわからないので、座標に勝手に乱数で値を設定して 指定された範囲の距離のみを出力する例です。 #C++Builderがないので、Borland C++ 5.5.1で書いた例です。 #あくまで考え方なので、このままでは使えません (全角スペースは半角スペースに置き換えてください) #include <stdio.h> #include <stdlib.h> #include <math.h> #define RMAX 4000 double x[RMAX],y[RMAX]; int main(int argc,char* argv[]) {   int i,j;   double dist, rmin,rmax;   if (argc < 3) {     printf("usage:dc min max\n");     return 1;   } else { // 最小、最大の読み込み     rmin=atof(argv[1]);     rmax=atof(argv[2]);     printf("min=%f max=%f\n\n",rmin,rmax);   } // テスト用に値をセット   for (i=0;i<RMAX;i++){     x[i] = rand();     y[i] = rand();   } // 距離の計算   for (i=0;i<RMAX;i++){     for (j=i+1;j<RMAX;j++){       dist = sqrt((x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]));       if (rmin <= dist && dist <= rmax){          printf("%04d:%04d dist = %f\n",i,j,dist);       }     }   }   return 0; }

kamikita
質問者

お礼

ありがとうございます。 座標はExcelから取るつもりでした。 最近勉強し始めたばっかりで、まだ回答の内容を理解しきれませんが、これを手助けに頑張ってみたいと思います。

その他の回答 (1)

  • Rulurulu
  • ベストアンサー率47% (8/17)
回答No.2
kamikita
質問者

お礼

ありがとうございます。 やっぱり、専門書は高いですね… おススメのサイト、大変参考になりました。 ありがとうございます。

関連するQ&A