C言語のことで質問です。
データ探索のプログラミングを作りたいです。
学んでいる最中なのでソースコードがぐちゃぐちゃです。
アドレスいただけるとありがたいです。
実現したいこと
・配列要素数は 10 個と考えます。
・必ずシノニムが発生した状態の配列要素の設定とする
・シノムニが発生した場合、空いている格納場所を探し格納したいです。
・シノニム発生によりハッシュ値の場所に格納されなかったデータについて、正しく検索できていることを確認できる実行結果とする
・
発生している問題・エラーメッセージ
エラーメッセージ エラー E2188 194.cpp 8: 式の構文エラー(関数 main() ) エラー E2277 194.cpp 14: 左辺値が必要(関数 main() ) 警告 W8004 194.cpp 20: 'x' に代入した値は使われていない(関数 main() ) *** 4 errors in Compile *** ### 該当のソースコード #include <stdio.h> main() { int x[10]={90,-1,30,45,-1,68,-1,-1,25,12}; int i,x,a; printf("数値?"); scanf("%d",%x); i=0; i=x/10; while(i!=-1 && i<=9 && i!=x){ i=i++; } if(i>9 || i=-1 || i=x){ printf("格納エラ―"); } else{ printf("%d",i); } } ### 補足情報 疑似言語ではこうゆう風に考えました。 〇プログラム:データ探索 〇整数型:a□,x,i ・データxを入力 ・i←x%10 a[i]≠-1 and i <=9 and a[i]≠x ・i←i+1 i >9 or a[i]=-1 or a[i]=x ・”探索エラー”を表示 ・iを表示
で、ハッシュ表および検索のコードはどこですか?
コードもよくわかっていません。。。
10個の配列があり、それのデータ探索するプログラムを教えていただきたいです。
データの値をxとして、ハッシュ関数はh=(x)%10と考えました。
データを自分で決めて配列内に格納したいです。
例えば、データを3,10,25とすると、a[0]の部屋に10、a[5]の部屋に25、a[7]の部屋に3がはいるようなプログラミングを書きたいです。
> 例えば、データを3,10,25とすると、a[0]の部屋に10、a[5]の部屋に25、a[7]の部屋に3がはいるようなプログラミングを書きたいです。
そのためには何が必要ですか?
> a[7]の部屋に3がはいるような
なんで? a[3] の部屋に 3がはいる ではなくて?
while とif が必要だと思います。 変数をcut, a[], x, iとして、cut <=2 and a[i]≠x をwhile で回して、if でa[i]=x 表示するかしないかを選択する必要があるなと思いました。
割った数のあまりが入ると思っていました。a[3] の部屋に 3がはいるが正しいことでした。
ではシノニムの対処はどうしますか?
データが3,33,333 なら どの部屋に何がはいりますか?
シノムニが発生したら、空いている部屋を探し入れたいです。
また、データ探索の場合のプログラムを以下のように考えたのですが、うまくシノムニが代入されません。初期値は-1を入れてみました。
#include <stdio.h>
main()
{
int cnt,x,i,tbl[10]={20,-1,-1,-1,30,-1,-1,-1,-1,-1};
cnt=0;
i=x%10;
printf("データを入力");
scanf("%d",&x);
while(cnt<=9 && tbl[i]!=x){
i=i+1;
if(i==10){
i=0;
}
}
if(tbl[i]==x){
printf("%dを表示",i);
}
else{
printf("格納エラ―\n");
}
}
