あるプログラムをまたべつのプログラムに移したいのですが。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ファイブマン

あるプログラムをまたべつのプログラムに移したいのですが。

#1

投稿記事 by ファイブマン » 13年前

あるプログラム(main関数、その他の関数を含む)をまたべつのプログラムに組み込みたいと考えています。
その他の関数だけなら新しいプログラムにインクルードすればいいだけの話ですが、例えば以下のプログラムで出た結果を新しいプログラム(例えばprintfだけで結果を出力するだけのプログラムあたり)
に反映させるにはどういった方法でできるのでしょうか。

コード:

#include <stdio.h>
#include <math.h>
 
#define CityNum 6
double X[CityNum]={6,3,9,10,4,2};
double Y[CityNum]={6,3,9,10,4,2};
 
int distance(int a, int b)
{
  double xd, yd;
  
  xd = X[a]-X[b];
  yd = Y[a]-Y[b];
  
  return (int)(sqrt(xd*xd+yd*yd) + 0.5);
} 
 
int main(void)
{
    int d;
    int flag[CityNum]={0};
    int tour[CityNum];
    int i,j,min,min_locate;
    int start;
    start=0;
    flag[start]=1;
    tour[0]=start;
    for(i=1;i<CityNum;i++){
        min=100;
        for(j=0;j<CityNum;j++){
            if(flag[j]==0 && start!=j){
                d=distance(start,j);
                if(d<min){
                    min=d;
                    min_locate=j;
                }
            }
        }
        flag[min_locate]=1;
        start=min_locate;
        tour[i]=start;
    }
    for(i=0;i<CityNum;i++)
        printf("tour[%d]=%d\n",i,tour[i]);
    return 0;
}
回答よろしくお願いします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: あるプログラムをまたべつのプログラムに移したいのですが。

#2

投稿記事 by みけCAT » 13年前

「パイプ」を使えばできると思います。
[search=google]パイプ 入力[/search]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: あるプログラムをまたべつのプログラムに移したいのですが。

#3

投稿記事 by beatle » 13年前

「新しいプログラム」というのが、別の実行ファイルになっていて、別プロセスとして動くならば、パイプや名前付きパイプ、ソケットなどが使えるでしょう。
「新しいプログラム」というのが、単に別の関数だということなら、普通の変数や、関数の引数などが使えるでしょう。

ファイブマン

Re: あるプログラムをまたべつのプログラムに移したいのですが。

#4

投稿記事 by ファイブマン » 13年前

返り値等を変えて関数にしてからmain関数に参照するようにしました.
パイプのやり方も検討したのですが,今回の場合こっちの方が適当だったのでそ
うしました.
回答していただきありがとうございます.

ファイブマン

Re: あるプログラムをまたべつのプログラムに移したいのですが。

#5

投稿記事 by ファイブマン » 13年前

解決をつけるのを忘れていました.

閉鎖

“C言語何でも質問掲示板” へ戻る