• 締切済み

線形探索

c++で線形探索をするプログラムを教えてください。 キーボードから入力した数字の中からある値があるかどうか調べるものです。

noname#221038
noname#221038

みんなの回答

  • neuron-x
  • ベストアンサー率52% (139/266)
回答No.1

簡単な線形検索に関する内容なので、何かの課題か何かでしょうか? (もし課題なら、他の人に頼るのでは無く自分できちんと考えてくださいね) 質問されている内容だと、何が分からないのかはっきりしないため、明確な回答は出来ません。 どの部分が知りたいですか? ・C++の文法? ・線形検索のアルゴリズム? ・入力した値を取得する方法? ・線形検索のアルゴリズムを、C++でどう表現するのかが分からない?

関連するQ&A

  • 線形と二分探索により探索を行うプログラムについて教えてください

    20個の配列にデータを入れ(プログラム内で初期化と代入を行って良い)入力した数を探索するプログラムをCmachineで作成したいのですが、線形探索により探索を行うプログラムと二分探索により探索を行うプログラムの作り方を教えていただけないでしょうか?

  • 線形探索について

    C言語の線形探索の課題なんですが 5つの整数を入力して その入力した値からみつけたい値を探索する課題なのですが #include <stdio.h> /*--- 要素数nの配列aからkeyと一致する要素を線形探索 ---*/ int search(const int a[], int n, int key) { int i = 0; while (1) { if (i == n) return (-1); /* 探索失敗 */ if (a[i] == key) return (i); /* 探索成功 */ i++; } } int main(void) { int i, ky, idx; int x[4]; int nx = sizeof(x) / sizeof(x[0]); printf("%d個の整数を入力してください。\n", nx); for (i = 0; i < nx; i++) { printf("x[%d]:", i); scanf("%d", &x[i]); } printf("探す値:"); scanf("%d", &ky); idx = search(x, nx, ky); /* 配列xから値がkyである要素を線形探索 */ if (idx == -1) puts("探索に失敗しました。"); else printf("%dは%d番目にあります。\n", ky, idx + 1); return (0); } ここまではわかるのですが、 x[0]=99 x[1]=99 x[2]=88 x[3]=99 x[4]=22 と入力したときに 99は 1番目に見つかりました 2番目に見つかりました 4番目に見つかりました と出力したいのですがうまくいきません 線形探索で同じ数値を探索するにはどうすればよいのですか?

  • 線形探索と2分探索

    「線形探索」と「2分探索」について、それぞれ違いが分かるように説明しなさい。またそれぞれがもう一方より優れているのはどのような場合か、その理由とともに示しなさい。 という問題の説明がうまくできません。 どうしたら分かりやすく説明できるでしょうか?

  • 線形探索と二分探索

    線形探索と二分探索のプログラムを作成中です。 自力(本やwebに落ちているサンプルを参考にして)でここまで作りましたが正直自信がありません。どうかお願いします。 #include <stdio.h> #define ARRAYI1_MAX sizeof(array1) #define ARRAYI2_MAX sizeof(array2) //int binary_search(int*,int,int); //二分探索関数のプロトタイプ宣言 int liner_search(int*,int,int); //線形探索関数のプロトタイプ宣言 void main(void) { int array1[]={2,3,5,8,12,20,32,52}; int array2[]={22,34,65,66,12,33,43,5,1}; int result,key; printf("探す文字を入力して下さい。\n"); sacnf("%d",&key); result=liner_search(array1,ARRAYI1_MAX,key); if(result<0){ printf("見つかりませんでした\n");} else{ printf("%d番目に見つかりました\n",result);} } //線形探索 int liner_search(int*array,int num_array,int key) { int i=0; for(i=0;i<result;i++) } /*二分探索 int binary_search(int*array,int num_array,int key) { }*/

  • 二分探索木を用いての探索

    C言語でプログラミングしています。 二分探索木を用いて探索するプログラムなのですが 与えられた値の前後の値(与えられた値より大きく(小さく)てその値 に一番近いもの)を見つけたいのですが分かりません。 いろいろとネット等で調べてみると「挿入してその左右を見る」 となっているのですが…。 普通の二分探索木ではだめなのでしょうか? よろしくお願いします。

  • 線形探索(番兵法)のプログラムについて。

    線形探索(番兵法)のプログラムについて考えています。 メイン関数からsearch関数に値を渡してそこで探索させるのですが、 int search(int a[], int n, int key) { int i = 0; a[n] = key; while (1) { if (a[i] == key) break; i++; } return (i == n ? -1 : i); } のwhileを使ったやり方からfor文を使ったやり方に変更したいと思っています。 色々な方法でプログラムを考えてみたいので。 そうすると、なんかうまくいきません。 for文だとどのように考えたらいいのでしょうか?

  • pascalでの二分探索(バイナリサーチ)

    ファイルからデータを読み込み,それを整列し,入力された値をデータの中から二分探索によって探索することを繰り返すプログラムが作りたいのですが,どのように記述すればよいのか分かりません。教えてください。

  • 数字探索について、プログラムかフローチャートを教えてください(>_<)

    数字探索について、プログラムかフローチャートを教えてください(>_<) 使用するアプリケーションはMicrosoftOffice2007-ExcelのVisualBasicです。 5桁の数字500個の中から、指定した数字があるかどうかを探索したいと思ってます。 2つ以上の位で、値が一致したときに、その数字を表示したいです。 ※数字について、"40"のように、5桁に満たない数字は、"00040"と、"0"を前に付けています。 Ex. 探索する数字:"04256" 探索される数字↓↓ 46025……一致する位なし 74596……2桁一致 02256……4桁一致 34210……2桁一致 よって、メッセージボックスには 「2桁一致は」 「74596」 「34210」 「3桁一致はありませんでした」 「4桁一致は」 「74596」 「完全一致はありませんでした」 のように表示させたいと思っています。 フローチャートさえ書ければ、あとは試行錯誤、自分で頑張ってみるので、フローチャートだけでも、一緒に考えて頂けませんか。 お手数ですが、お力添え願いますm(__)m

  • アルゴリズムを勉強していたのですが、線形探索をする

    アルゴリズムを勉強していたのですが、線形探索をする時にデータ件数がNの時平均比較回数が(N+1)÷2回となっていたのですが、なぜ+1をしているのでしょうか?普通にN÷2ではダメなんでしょうか 解説お願いします

  • 探索プログラムの速さの計算方法を教えてください。

    以下が問題です。 「長さがNの系列に対して3nμ秒で探索を完了する線形プログラムと 4log_2(n)μ秒で探索を完了する二分探索プログラムと 2nlog_2(n)μ秒で整列を完了するプログラムがある。 これらのプログラムを利用して、長さが1024の未整列のデータ系列Sに対し、ある要素が含まれているかどうか探索したい。このとき以下の問いに答えよ。ここでの検索要求とは「系列Sにある要素Xが含まれているかどうか判定すること」とする。」 ・検索要求が1回、5回、10回の場合それぞれの最も速い探索方法とその時間を述べよ。 計算方法と答えを教えてください。