ページ 11

素人なのでどこがエラーなのかよく判らないんです。

Posted: 2010年8月24日(火) 00:31
by ヒロ
下記のプログラムはただ単に
関数【メソッド】の呼び出し、またはswitch文を書いたのですが
関数の呼び出し、または定義が間違っているようなのですが、よく判りません。
間違っているところを教えていただけると大変うれしいです。
よろしくお願いします。


#include <stdio.h>
int nyuuryoku(void);


int x,y;
int main(void)
{
int x,y,a,b;
printf(" 計算メニュー\n");
printf("-------------------------\n");
printf(" 1. X + Y\n");
printf(" 2. X - Y\n");
printf(" 3. X * Y\n");
printf(" 4. X / Y\n");
printf(" 5. X % Y\n");
printf(" 6. 終了\n");
printf("-------------------------\n");
printf(" No.= ");
scanf("%d",&a);

switch(a)
{
case 1: nyuuryoku();
printf("X + Y = %d"x+y);
break;

case 2: nyuuryoku();
printf("X - Y = %d"x-y);
break;
case 3: nyuuryoku();
printf("X * Y = %d"x*y);
break;
case 4: nyuuryoku();
printf("X / Y = %d"x/y);
break;
case 5: nyuuryoku();
printf("X % Y = %d"x%y);
break;
case 6: printf("終了!");
break;

default: printf("入力ミス");
}



return 0;

}

int nyuuryoku()
{
printf("\nX= ");
scanf("%d",&x);
printf("\nY= ");
scanf("%d",&y);
return (x,y);
}

Re:素人なのでどこがエラーなのかよく判らないんです。

Posted: 2010年8月24日(火) 00:47
by へろりくしょん
switch() 文内の printf() の第一引数と第二引数の間にカンマがありません。
nyuuryoku() 関数の戻り値は常にyを返します。 これは意図的なものですか?
nyuuryoku() 関数内で使われる変数xと変数yはグローバル変数ですが、main() 関数内で使われている変数xと変数yはローカル変数です。
main() 関数内で使われる変数xと変数yが初期化されていません。
main() 関数内で宣言された変数bは使われていません。

ざらっと見たかんじこれぐらいでしょうか。

Re:素人なのでどこがエラーなのかよく判らないんです。

Posted: 2010年8月24日(火) 00:56
by shuto
ぱっと見では int nyuuryoku() の戻り値 return (x,y) はマズイですね。
Cではその書き方しても戻り値は1つですのでヒロさんが意図した動作はしないでしょう。

グローバルで宣言した変数の振る舞いを誤解しているような気がします。


あと、せっかく規約に
コンパイルエラーの質問時は必ず最低限のエラーメッセージも書きましょう。
って赤字で書いてあるんですから、エラーメッセージを書くべきです。
エラーメッセージを見れば、コードを読まなくてもミスが分かったりしますよ。