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


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

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

 詳しくはこちら


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

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


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

No.4262

二分探索
投稿者---城宇都(2005/07/11 19:50:54)


データを二分探索を使って探索し、0を入力すると
探索を終えるプログラムを作っていて、下のようなのを
作ってみましたが、どこかが間違っているようで「データ
が見つかりませんでした。」としか表示されません。
よくわからないのでどなたかご教授ください。


#include<stdio.h>
main()
{
 int code,low,up,m;
 int  a[21]={0,2,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40};

   printf("Code = ");
   scanf("%d",&code);
while(code!=0)
  {
   low=0;
   up=21;
   m=(low+up)/2;
while(low!=up-1 && a[m]!=code)
   {
   if(code<a[m])
   {
    m=up;
   }
    else
   {
    m=low;
   }
    m=(low+up)/2;
      if(low=up-1)
      {
       printf("データは見つかりませんでした。");
      }
      else
      {
       printf("データは %d 番目で見つかりました。",m);
      }
     printf("\n");
     printf("Code = ");
     scanf("%d",&code);
  }
  }
  }




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:二分探索 4263 まきじ 2005/07/11 20:01:27
<子記事> Re:二分探索 4264 まきじ 2005/07/11 20:30:41


No.4263

Re:二分探索
投稿者---まきじ(2005/07/11 20:01:27)


>if(low=up-1) printf("データは見つかりませんでした。");

== では?


この投稿にコメントする

削除パスワード

No.4264

Re:二分探索
投稿者---まきじ(2005/07/11 20:30:41)


>int a[21]={0,2,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40};

1 個足りない。

>if(code<a[m]) m=up;
>else m=low;

code が真中の値より小さければ、真中を現在の右側にするのですか?
「二分探索」のアルゴリズムをもう一度よく考えてみてください。



この投稿にコメントする

削除パスワード

No.4265

Re:二分探索
投稿者---城宇都(2005/07/12 20:39:48)


修正してみましたが、何を入力してもデータが10番目で
見つかりました。としかでなくなりました・・・ 


この投稿にコメントする

削除パスワード

No.4266

Re:二分探索
投稿者---まきじ(2005/07/12 20:50:18)


>修正してみましたが、何を入力してもデータが10番目で
>見つかりました。としかでなくなりました・・・ 

low m up のずらし方が間違ってるからです。

code が a[m] のより小さい場合は、 low から m - 1 の間に、code がある。
code が a[m] のより大きい場合は、 m + 1 から up の間に、code がある。

という事がわかれば、 low m up に入れる値は解りますよね?


この投稿にコメントする

削除パスワード

No.4268

Re:二分探索
投稿者---城宇都(2005/07/13 00:36:40)


できました!
ありがとうございます。


この投稿にコメントする

削除パスワード

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




掲示板提供:Real Integrity