ページ 11

このプログラムの処理の流れの説明をご教示願いたいのですが…

Posted: 2012年9月24日(月) 01:11
by のわ
どなたかお願いします

コード:

int attack = 20;
int defense = 15;
int damage = 50;
//ダメージ計算関数
int getDamage(int defense, int attack)
{
        int damage;
        damage = attack - defense / 2;
        return damage;
}
//main関数
void main()
{
       int attack = 30;
       int defense = 25;
       int damage = 40;
     
       // ダメージ計算関数の実行
   damage = getDamage(attack, defense);
      // ダメージの表示
   printf("damage = %d¥n", damage);
}

よろしくお願いします

Re: このプログラムの処理の流れの説明をご教示願いたいのですが…

Posted: 2012年9月24日(月) 01:55
by トントン
流れとしては
getDamage関数に引数を渡して
getDamage関数内で演算した値(戻り値)を出力している
ということをしています。

が、そういうことを聞きたいんじゃないですよね?
のわさんはどの程度このプログラムを理解しているのでしょうか?

また、短いプログラムですが非常にカオスっているのが気になるところです。

Re: このプログラムの処理の流れの説明をご教示願いたいのですが…

Posted: 2012年9月24日(月) 10:20
by non
実引数と仮引数の名前の付け方が気になります。

Re: このプログラムの処理の流れの説明をご教示願いたいのですが…

Posted: 2012年9月24日(月) 10:43
by TOMY
のわ さんが書きました:

コード:

int attack = 20;
int defense = 15;
int damage = 50;
//ダメージ計算関数
int getDamage(int defense, int attack)
{
        int damage;
        damage = attack - defense / 2;
        return damage;
}
//main関数
void main()
{
       int attack = 30;
       int defense = 25;
       int damage = 40;
     
       // ダメージ計算関数の実行
   damage = getDamage(attack, defense);
      // ダメージの表示
   printf("damage = %d¥n", damage);
}

なんかいろいろ気にはなるのですが、のわさんはプログラム初心者でしょうか?
ダメージの計算が少し気になったので記述させていただきます。私もプログラムはひどいほうなのでのわさんの意図とは間違ったことを言ってしまうかもしれませんが。
グローバル変数で用意している
attack
defence
damage
をmainメソッド内で再定義しているのには何か意味があるのでしょうか?

あと、プログラムの処理の流れは私が見た限り
1:グローバル変数でattack,defence,damageを定義
2:自作関数で戻り値int型のgetDamage関数を定義
3:main関数内でattack,defence,damageを再定義
4:変数damageに先ほど作られた自作関数getDamageで計算されたdamage量を代入
5:printf文でダメージを表示

と、こんなところでしょうか。

Re: このプログラムの処理の流れの説明をご教示願いたいのですが…

Posted: 2012年9月25日(火) 16:34
by みけCAT
TOMY さんが書きました:とりあえずgetDamageメソッド内の計算がおかしい気がします。
attackからdefence/2した値がdamageになっているのですが、これは計算として逆なのではないのでしょうか。
このままだとattackの値が防御力として扱われることになりますよ。
何故ですか?

Re: このプログラムの処理の流れの説明をご教示願いたいのですが…

Posted: 2012年9月26日(水) 09:54
by TOMY
みけCAT さんが書きました:何故ですか?
あぁ、すみません。勘違いしてました。
damageとattackを逆に見てしまったみたいです。
そのため、そこの記述を削除させてもらいます。
ご迷惑おかけしました。