- 締切済み
このプログラムにアドバイスをください
問題が ・100個の要素を持った一次元配列をmain()関数内で宣言 ・一次元配列と要素数を引数として持つ関数seisei() ・関数seisei()は乱数を使い渡された配列を0~99の整数で初期化する。 ・一次元配列、要素数そして変数のポインタを引数としてもつ関数goukei() ・関数goukei()は渡された配列に格納された数値の合計を計算し、渡された変数のポインタにその合計値を代入する。 と問題があり、下記のようにプログラムを作ったんですが、どうしてもコンパイルできません。どなたかご指摘よろしくお願いします。 #include <stdio.h> #include <time.h> void seisei(int *,int); void goukei(int *, int, int*); int i, *sum; int main() { int a[100],sum; seisei(a,100); goukei(a,100,&sum); printf("sum:%d\n",&sum); return 0; } void seisei(int *a[i], int n) { srand(time(NULL)); for(i = 0; i <= n; i++){ *a[i] = rand() % 100; } } void goukei(int *a[i],int n,int *sum) { *sum = 0; for(i = 0; i <= n; i++){ *sum += *a[i]; } }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
★間違っている場所を教えます。 >どなたかご指摘よろしくお願いします。 ↑ 指摘だけでいいんですよね。 ・main 関数にある >printf("sum:%d\n",&sum); の行と ・seisei 関数の定義そのものの >void seisei(int *a[i], int n) の行と ・同じく seisei 関数にある >for(i = 0; i <= n; i++){ の行と次の >*a[i] = rand() % 100; の行と ・goukei 関数の定義そのものの >void goukei(int *a[i],int n,int *sum) の行と >for(i = 0; i <= n; i++){ の行と次の >*sum += *a[i]; の行の 7 箇所が正しくないです。 ・回答者 No.1 さんの回答を頼りにソースを見直して下さい。 ・以上。それでは頑張って下さい。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
#include <stdio.h> #include <time.h> void seisei(int *,int); void goukei(int *, int, int*); int i, *sum; int main() { int a[100],sum; seisei(a,100); goukei(a,100,&sum); printf("sum:%d\n",sum); return 0; } void seisei(int *a, int n) { int i; srand(time(NULL)); for( i = 0; i < n; i++) { a[i] = rand() % 100; } } void goukei(int *a,int n,int *sum) { int i; *sum = 0; for (i = 0; i < n; i++) { *sum += a[i]; } } ポインタと配列、勉強し直し。