- 締切済み
線形探索法のプログラムについて
配列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; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- PG_RankB
- ベストアンサー率40% (12/30)
コードにサラッと目を通しただけで恐縮ですが、この通りのコードで書いていらっしゃるのであれば、A,B共にミスがあります。 A,B共にロジックが少し異なりますが、原因はロジックの違いでは無く、文法上の誤りです。 まず、scanfの使い方と、Bのプログラムにおいて変数Kが初期化されないままインクリメントされている事に着眼してみてはいかがでしょうか。
- sha-girl
- ベストアンサー率52% (430/816)
scanf("%d",j)ではなく scanf("%d",&j)です。 プログラムBに関してはkが不定
お礼
完全なミスでした。 ご指摘ありがとうございました!!
お礼
原因を特定することができました。 ケアレスミスが多すぎですね。 以降、気を着けます。。。