検索結果 9 件
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: N分ヒープについて
- 返信数: 1
- 閲覧数: 977
N分ヒープについて
N分ヒープによってデータを格納する際に、そのデータをすでに格納されているデータと大きさを比較した回数を返す関数を作りたいのですが、よくわかりません。どうしたらよいでしょうか? #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5000000 int A[N]; int B[N]; int insert_n_heap(int d,int n){ int i=N-1; long count=0; A[N-1]=d; while(i!=0){ if(A[i]<=A[(i-1)/n]){ A[i]=A[(i-1)/n]; A...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: オープンハッシュ法
- 返信数: 4
- 閲覧数: 2408
Re: オープンハッシュ法
lldbにてエラー箇所を探してみたところ62行目で起こっているようです...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: オープンハッシュ法
- 返信数: 4
- 閲覧数: 2408
Re: オープンハッシュ法
ありがとうございます! 自分で考えてみて、ハッシュ関数h_1によって、衝突が必ず起こってしまうということがわかりました。改善前のハッシュ関数ではcountの値をあたえられた2次元平面座標のx座標y座標の値にかけてしまっていたがために、最初のデータを登録するとき以外は、必ず一度ハッシュ値が0になってしまい、そのことにより衝突が起こってしまっていることがわかりました。上記の部分を改善してみた結果、データを順に登録して行った際、最初の方に登録されるデータによる衝突回数は0となり、正しい結果が得られるようになったと思われます。 しかし、今度は比較的大きな数字をscanfによって入力した際 Bus Er...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: オープンハッシュ法
- 返信数: 4
- 閲覧数: 2408
オープンハッシュ法
オープンハッシュ法によって2次元座標の一点を表現したデータを格納していくプログラムなのですが、衝突数をうまく表示させることができません。 1つ目のデータを格納するときの衝突数は0で正しい結果が出るのですが、2つ目ですでに衝突数が1と表示されてしまいます。試しにハッシュ値をそれぞれのデータに対して表示させてみたところ、1つ目と2つ目のデータのハッシュ値は全く異なるものになっており、衝突が起こることはありえないと思うのですが、実行結果を見ると衝突が起こっていることになっています。 下記のプログラムにおいて、衝突数はint insert_hash(POINT p)という関数のcountという変数で処...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: C言語でまるばつゲームを作っています
- 返信数: 4
- 閲覧数: 2976
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: C言語でまるばつゲームを作っています
- 返信数: 4
- 閲覧数: 2976
Re: C言語でまるばつゲームを作っています
確かにそうですね!
ありがとうございます!
ありがとうございます!
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 再掲:C言語の課題で悩んでいます。
- 返信数: 5
- 閲覧数: 3441
Re: 再掲:C言語の課題で悩んでいます。
ハッシュ表に座標データを登録する処理はできたのですが、各ハッシュに登録されている要素の個数を求める処理がうまくいきません。ある1つのハッシュについて調べ終わった後に、次のハッシュについて調べるようにする処理がうまくいっていないのだと思います。 今自分で書いてみたものは void hash_status(){ int i,j=0,m,n; int A[B]; double ave,p; CELL *a; int max=0,min=0; for(i=0;i<B;i++){ a=&H[i]; while(a!=NULL){ A[i]++; a=a->next; } } max=0; min=0; ...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: 再掲:C言語の課題で悩んでいます。
- 返信数: 5
- 閲覧数: 3441
再掲:C言語の課題で悩んでいます。
ハッシュ表に2次元平面上の1点を表現した構造体をデータとして登録する関数を作り、0~9999までの一様乱数を発生させ、それを構造体に代入し、得られた構造体を上記の関数を用いてハッシュ表に登録したいのですが、セグメンテーションフォルトが出てうまくいきません。いろいろと考えて試してみたのですが、解決できませんでした。 自分で考えたプログラムを載せておきます。 #include<stdio.h> #include<math.h> #include<stdlib.h> #include<time.h> #define B 10000 #define A 100 typedef struct _poin...