• 締切済み

このプログラムにアドバイスをください

問題が  ・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]; } }

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★間違っている場所を教えます。 >どなたかご指摘よろしくお願いします。  ↑  指摘だけでいいんですよね。 ・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 さんの回答を頼りにソースを見直して下さい。 ・以上。それでは頑張って下さい。

回答No.1

#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]; } } ポインタと配列、勉強し直し。

関連するQ&A