←検索窓の楽しみ方
  ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.3723

二つのプログラムを組み合わせる
投稿者---C言語勉強中(2005/05/06 14:23:02)


はじめまして。
突然ですが下の二つのプログラムを組み合わせて
上のプログラムで出力された組み合わせ(route)の距離を
下のプログラムで求めるというものを考えています。
出力例としては

1 2 5 4 3 d = 21

のようにルートとその距離がすべて出るようなものです。
アドバイスやヒントなどよろしくお願い致します。


#include <stdio.h>

#define N  100

int next_perm(int *a, int n, int r)
{
    for ( ; r > 0; r--) {
        int i = r, t = a[r];
        while (++i <= n)
            if (a[i] > t) { a[r] = a[i]; a[i] = t; return 1; }
        for (i = r; i < n; i++) a[i] = a[i+1];
        a[n] = t;
    }
    return 0;
}

int main(void)
{
    int a[N], n, r, i;
       
    while (printf("n ? "), scanf("%d", &n) == 1)  /* nに6以下を代入*/
          for ( r = 1 ; r <= n ; r++)
          if (n < N && r <= n) {
            for (i = 1; i <= n; i++) a[i] = i;
            do {printf(" 0 ");
                for (i = 1; i <= r; i++) 
                printf(" %d ", a[i]);
                printf(" %d\n", n+1 );
            } while (next_perm(a, n, r));
        }
    return 0;
}

-------------------------------------------------------------

#include <stdio.h>

main ()
{
    int a , x , y , z , total ,
        distance[6][6] = { { 0 , 5 , 6 , 11, 2 , 9 }, /*適当な数*/
                           { 5 , 0 , 4 , 8 , 5 , 6 },
                           { 6 , 4 , 0 , 13, 6 , 15},
                           { 11, 8 , 13, 0 , 7 , 15}, 
                           { 2 , 5 , 6 , 7 , 0 , 29},  
                           { 9 , 6 , 15, 15, 29, 0 } };
        
        printf("route?\n"),
        scanf("%d%d%d%d", &x, &y, &z, &a);
        total = distance[x][y] + distance[y][z] + distance[z][a];
        printf("%d\n" , total);

}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:二つのプログラムを組み合わせる 3725 nop 2005/05/06 16:50:10
<子記事> Re:二つのプログラムを組み合わせる 3726 まきじ 2005/05/06 18:11:49
<子記事> Re:二つのプログラムを組み合わせる 3727 おでん 2005/05/06 18:40:49


No.3725

Re:二つのプログラムを組み合わせる
投稿者---nop(2005/05/06 16:50:10)


>はじめまして。
>突然ですが下の二つのプログラムを組み合わせて
>上のプログラムで出力された組み合わせ(route)の距離を
>下のプログラムで求めるというものを考えています。
>出力例としては
>
>1 2 5 4 3 d = 21
>
>のようにルートとその距離がすべて出るようなものです。
>アドバイスやヒントなどよろしくお願い致します。

で、何がわからないのですか?


この投稿にコメントする

削除パスワード

No.3726

Re:二つのプログラムを組み合わせる
投稿者---まきじ(2005/05/06 18:11:49)


>上のプログラムで出力された組み合わせ(route)の距離を
>下のプログラムで求めるというものを考えています。

ソース自体を一緒にしてしまうのは、駄目なのですか?



この投稿にコメントする

削除パスワード

No.3728

Re:二つのプログラムを組み合わせる
投稿者---C言語勉強中(2005/05/07 00:56:08)


単純にソースを一緒にしたプログラムだと思って頂ければ良いです。
説明不足で申し訳ないです。


この投稿にコメントする

削除パスワード

No.3729

Re:二つのプログラムを組み合わせる
投稿者---まきじ(2005/05/07 02:20:08)


>単純にソースを一緒にしたプログラムだと思って頂ければ良いです。
>説明不足で申し訳ないです。

変数名は役割が分かる名前を付けてください。
2 つのプログラムの変数の対応関係が分かるように。
あと{}もきちんと付けてください。


この投稿にコメントする

削除パスワード

No.3730

Re:二つのプログラムを組み合わせる
投稿者---ぽこ(2005/05/07 16:09:40)


>単純にソースを一緒にしたプログラムだと思って頂ければ良いです。

実際にソースコードをマージし、問題にぶつかってから
質問することをお勧めします。
具体的な問題を提示されたほうが回答をもらいやすいです。


この投稿にコメントする

削除パスワード

No.3731

Re:二つのプログラムを組み合わせる
投稿者---C言語勉強中(2005/05/07 20:39:37)


自分が考えているのは下のプログラムではscanfの関数を使ってルートを決めていますが、
そのルートの選定を上のプログラムで出力したものをしようしたいと考えています。
自分でやろうとした場合、出力されたものをどうやって反映させればよいか分からず
止まっています。
ヒント、アドバイス等お願いいたします。


この投稿にコメントする

削除パスワード

No.3733

Re:二つのプログラムを組み合わせる
投稿者---ぽこ(2005/05/08 01:45:35)


>出力されたものをどうやって反映させればよいか分からず
>止まっています。

出力結果を渡すのではなく、出力する予定だったデータを渡せば
良いはずです。
ルート(route)を決定しているのはnext_perm()ですよね?
これを呼ぶ度にnext_perm()の引数として渡してある配列a[]の内容が
変わり、配列a[]の内容がルートになりますよね?
そうするとa[0]、a[1]、a[2]、a[3]がそれぞれ二つ目のプログラムの
scanf()で読み込むはずだったx、y、z、aになりませんか?

int a[];
while(next_perm(a, n, r)) // 全ての経路を表示するまで
{
    //それぞれのルートを計算
    total = distance[a[0]][a[1]] + distance[a[1]][a[2]] + distance[a[2]][a[3]];
    //表示
    printf("%d\n" , total);
}




この投稿にコメントする

削除パスワード

No.3734

Re:二つのプログラムを組み合わせる
投稿者---C言語勉強中(2005/05/08 15:52:15)


ぽこさん、ありがとうございました。
おかげで解決しました。
言われてみれば分かるのですがそれに気付くことが
なかなかできないです。
以後もお世話になるかもしれませんがその時はよろしくお願いします。




この投稿にコメントする

削除パスワード

No.3741

Re:二つのプログラムを組み合わせる
投稿者---C言語勉強中(2005/05/08 22:46:16)


ぽこさんすみません、考え方は分かったのですが実際に
プログラムに組み込んだときに距離が表示されずに止まってしまいます。
自分では止まってしまう原因がわからないので
実際のソースを教えて頂けないでしょうか。
よろしくお願いします。


この投稿にコメントする

削除パスワード

No.3742

Re:二つのプログラムを組み合わせる
投稿者---ぽこ(2005/05/08 22:58:30)


>自分では止まってしまう原因がわからないので
>実際のソースを教えて頂けないでしょうか。

C言語勉強中さんのソースコードを提示してください。
また、期待する動作(出力)や現状の動作の説明も載せられると
他の方々からも回答が得られやすいと思います。

#名指しの質問は止めた方が良いです。(反感を買う恐れがあります。)
#ここは、管理人様の善意で「多くの方々のために」提供されてある場で
#あることをお忘れなく。



この投稿にコメントする

削除パスワード

No.3745

Re:二つのプログラムを組み合わせる
投稿者---C言語勉強中(2005/05/09 00:13:07)


すみませんでした。今後気をつけます。

プログラムの方なのですが自分が
考えているのは例えばnに4を入れたときに

0 1 5  d = 11
0 2 5  d = 21
0 3 5  d = 26
    ・
   ・
   ・
0 4 3 2 1 5  d = 58

のようなものを考えています。
0と5出発点と到達点ということで固定しています。
ただし5のほうはnが変わると変わります。
よろしくお願いします。


この投稿にコメントする

削除パスワード

No.3727

Re:二つのプログラムを組み合わせる
投稿者---おでん(2005/05/06 18:40:49)


>突然ですが下の二つのプログラムを組み合わせて
>上のプログラムで出力された組み合わせ(route)の距離を
>下のプログラムで求めるというものを考えています。

ひょっとして、プロセス間通信を考えています?


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity