ページ 11

至急お願いします。

Posted: 2011年1月10日(月) 23:01
by momo
実行時間の計測をするためのプログラムです。
38行目を正確に直してほしいのですが・・・・

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10000/*変更して測定*/

void quick_sort(int a[], int l, int r){
int v, i, j, t;
if(r > l){
/*3要素の中央値*/
v = a[r]; j = (l+r)/2;
if (a[j] > v)
if(a[l] >= a[j]){
a[r] = a[j];
a[j] = v;
} else if (a[l] > v) {
a[r] = a[l];
a[l] = v;
}else if (a[j] >= a){
a[r] = a[j];
a[j] = v;
} else if (a[l] < v) {
a[r] = a[l];
a[l] = v;
}
quick_sort(a, l, i-1);
quick_sort(a, i+1, r);
}
}

main()
{
int i, x[MAX], n;
time_t start, end;
srand(99); /*乱数列の選択*/
for(i=0; i<MAX; i++) x = rand() % MAX;
n = MAX;
start = clock();
quick_sort(x, n);/*測定対象プログラム*/
end = clock();
printf("sort\n");
for (i = 0; i < n; i++)
if(i==i/100*100)printf("%d\n", x);/*100毎に出力*/
printf("exec time: %lf sec\n", (double)(end-start)/(double)CLOCKS_PER_SEC);
return 0;
}

で、『38: 呼び出し時のパラメータが足りない:quick_sort(関数 main )』
という風に出てしまうんですが、どうすれば良いのでしょうか。
分かる方お願いします。

Re: 至急お願いします。

Posted: 2011年1月10日(月) 23:03
by h2so5
quick_sortは引数が3つ必要なのに、
二つしか与えていないので、3つ目の引数を与えればよいですよ。

Re: 至急お願いします。

Posted: 2011年1月10日(月) 23:05
by みけCAT
quick_sort(x,0, n);/*測定対象プログラム*/

quick_sort(x,0, n-1);/*測定対象プログラム*/
を試してみてください。
自分の環境ではどちらもアクセス違反が出ましたが。
quick_sort関数でiを初期化せずに使っているのが問題ではないかと思われます。
コードは

コード:

タグで囲っていただけるとありがたいです。

Re: 至急お願いします。

Posted: 2011年1月11日(火) 10:10
by さかまき
http://detail.chiebukuro.yahoo.co.jp/qa ... 1051337970
大元のソースを直さないと、あとを絶たないかもですね。出所はどこですか?

Re: 至急お願いします。

Posted: 2011年1月12日(水) 00:09
by Dixq (管理人)
> momoさん

新しい投稿をする前に前のトピックを閉じるか何かコメントを返すようにお願いします。
また、複数の名前をお使いにならず、どれか一つをお使いください。
よろしくお願いします。

Re: 至急お願いします。

Posted: 2011年1月12日(水) 02:27
by momo
すみません。
トピックの閉鎖の仕方を教えてください。

Re: 至急お願いします。

Posted: 2011年1月12日(水) 02:31
by 沖 滉均
momo さんが書きました:すみません。
トピックの閉鎖の仕方を教えてください。
momoさん=nekoさん ではないのでしょうか?
トピックの閉鎖と仰っているのは解決したことにするということであれば、
投稿ボタンの横に 解決!と書かれたチェックボックスがありますので
そちらにチェックを入れて投稿していただければ解決済みにすることは可能です。