• 締切済み

線形探索法のプログラムについて

配列Aに格納されている数字を検索するプログラムより、 Aのプログラムでは配列Aに格納されている数字を検索(scanf("%d" , j)で入力)した にもかかわらず、「該当するデータがありませんでした」と表示されてしまいます。 Bのプログラムでは、配列Bに格納されている数字を検索(scanf("%d" , j)で入力)すると 「該当するデータがありました」と表示されます。 Aのプログラムで、------でかこってある部分に問題があると思われ、 いろいろと試してみましたが、未だにその理由をつかむことができません。 その理由を知りたく、書き込みを致しました。 ご教授の程宜しくお願い致します。 A. main(){ int i , j; int k = 0; int A[5] = {4 , 1 , 3 , 4 , 5}; printf("検索する数値を入力してください > "); scanf("%d" , j); --------------------------------------------------------------- for(i=0 ; i<5 ; i++){ if(A[i] == j){ printf("該当するデータはあります"); k++; } } --------------------------------------------------------------- if(k <= 0){ printf("該当するデータがありませんでした\n"); } return; } B #include<stdio.h> main(){ int i , j , k; int A[5] = {4 , 1 , 3 , 4 , 5}; printf("検索する数値を入力してください > "); scanf("%d" , j); for(i=0 ; i<5 ; i++){ if(A[i] == j){ k++; } } if(k>0){ printf("該当するデータはありました"); }else{ printf("該当するデータはありませんでした"); } return; }

みんなの回答

  • PG_RankB
  • ベストアンサー率40% (12/30)
回答No.2

コードにサラッと目を通しただけで恐縮ですが、この通りのコードで書いていらっしゃるのであれば、A,B共にミスがあります。 A,B共にロジックが少し異なりますが、原因はロジックの違いでは無く、文法上の誤りです。 まず、scanfの使い方と、Bのプログラムにおいて変数Kが初期化されないままインクリメントされている事に着眼してみてはいかがでしょうか。

KGM
質問者

お礼

原因を特定することができました。 ケアレスミスが多すぎですね。 以降、気を着けます。。。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

scanf("%d",j)ではなく scanf("%d",&j)です。 プログラムBに関してはkが不定

KGM
質問者

お礼

完全なミスでした。 ご指摘ありがとうございました!!

関連するQ&A