main関数が完成形でそれに伴って上の関数を作っていく問題。
input()で使ったnumをgoukei()でも使うためにはどうすればいいでしょうか
code
int input() {
printf("整数は何個ですか:");
scanf("%d", &num);
return num;
}
int goukei() {
int i=0;
int sum=0;
int tmp;
for (i = 0; i < num; i++) {
printf("No.%d:", i + 1);
scanf("%d", &tmp);
sum += tmp;
}
return sum;
}
void output(int num,int sum) {
printf("合計値:%d\n",sum);
printf("平均値:%2.f\n", (double)sum / num);
}
int main(void)
{
int i = 0;
int sum = 0;
int num;
num = input();
sum = goukei();
output(sum, num);
return 0;
}
/code
仮引数を受け取らない関数について
Re: 仮引数を受け取らない関数について
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
([]で囲まれていない code や /code はcodeタグではありません)
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
([]で囲まれていない code や /code はcodeタグではありません)
「仮引数を受け取らない」という条件なので、グローバル変数を使うしかなさそうですね。02 さんが書きました: ↑2年前input()で使ったnumをgoukei()でも使うためにはどうすればいいでしょうか
#include <stdio.h>
/*
グローバル変数
input関数やgoukei関数ではローカルでnumが宣言されていないため、これが参照される。
main関数ではこれではなくローカルで宣言されているnumが参照されるが、
このローカルのnumにはinput関数から返されるグローバル変数numの値が代入されるため、問題ない。
*/
int num;
int input() {
printf("整数は何個ですか:");
scanf("%d", &num);
return num;
}
int goukei() {
int i=0;
int sum=0;
int tmp;
for (i = 0; i < num; i++) {
printf("No.%d:", i + 1);
scanf("%d", &tmp);
sum += tmp;
}
return sum;
}
void output(int num,int sum) {
printf("合計値:%d\n",sum);
printf("平均値:%2.f\n", (double)sum / num);
}
int main(void)
{
int i = 0;
int sum = 0;
int num;
num = input();
sum = goukei();
output(sum, num);
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 仮引数を受け取らない関数について
そのくらいの小さいプログラムならばまだいいですが、グローバル変数でやったらできました!
ある程度以上の規模のプログラムではグローバルはなるべく使わない方が
無難だと思います。
なぜなら、どの関数からでも参照・変更ができてしまうので、
思わぬところで変更されていたりするとそれを見つけるのが
なかなかむずかしかったりしますから。
その辺の危険性をよくわかった上で使ってください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。