こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

投稿日時 - 2007-07-07 15:32:01

QNo.3146999

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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 さんの回答を頼りにソースを見直して下さい。
・以上。それでは頑張って下さい。

投稿日時 - 2007-07-07 22:24:53

ANo.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];
}
}

ポインタと配列、勉強し直し。

投稿日時 - 2007-07-07 15:43:01

あなたにオススメの質問