• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Microsoft Visual Studio 2005の関数なのです)

Microsoft Visual Studio 2005の関数と関数の使用方法

このQ&Aのポイント
  • C++言語のMicrosoft Visual Studio 2005で関数を使用する方法についての質問です。
  • 質問者は今まで関数を使用したことがなく、具体的な使い方がわからないようです。
  • 具体的な問題として、2つの実数を加算、減算、積算、除算し、それらの結果を表示する方法が知りたいそうです。また、割る値が0の場合にはエラーメッセージを表示することも求められています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

calc_amari()にも誤りがありますが、修正しましたか? a % b で、b = 0 は、認められませんよ。

-poor-
質問者

お礼

double calc_waru(double a,double b) { if (b==0) { printf("わ る= エラー\n"); return 0; } else { printf("わ る= %f\n",a/b); return a/b; } } double calc_amari(double a,double b) { double n; if (b==0) { printf("あまり= エラー\n"); return 0; } else { n=(int)a%(int)b; printf("あまり= %f\n",n); return n; } } ついにできました。 ホントにありがとうございます。 でも、完璧にマスターするには、少し時間がかかりそうです^^;

その他の回答 (3)

回答No.3

calc_waru()という関数では、除算していません。乗算になっています。 ---------------------------- なぜ『除算の場合の割る値が0の場合は、エラーを画面に表示すること。』になっているかというと、 0で割ることはできないからです。 数学では無限大で表現できますが、コンピュータでは0除算といって、プログラムが異常終了してしまいます。 だから、割る値が0かどうか事前にチェックして、異常終了を避けるようにプログラムしなくてはいけません。 ---------------------------- double calc_waru(double a,double b) {   if (b == 0)   {     printf("わ る= エラー\n");     return 0 ; // 練習問題なので、エラーのときは単に0を返すことにする。   }   else   {     return a / b ;   } }

-poor-
質問者

補足

申し訳ないのですが、このやり方でもプログラムが異常終了してしまいます。

回答No.2

補足です。 関数は、呼び出される前に実体を定義するか、extern宣言しておく必要があります。 次のaかbのいずれかのようにコーディングしてください。 そうしないとコンパイルエラーになります。 (a) double calc_tasu(double x, double y) {   return x + y ; } ; int main() {   ...   n = calc_tasu(a, b) ;   ... } (b) extern calc_tasu(double, double) ; int main() {   ...   n = calc_tasu(a, b) ;   ... } double calc_tasu(double x, double y) {   return x + y ; } ;

回答No.1

「関数を用いて」の意味は、+,-,/,*演算子を使わない、ということではないと思います。 たとえば、足し算なら、 ■今まで n = a + b ; ■課題の答え n = calc_tasu(a, b) ; double calc_tasu(double x, double y) {   return x + y ; } ; で良いのではありませんか? 掲載されているプログラムから察するに、あとは、自分で作れる力をお持ちだと思いますよ。

-poor-
質問者

補足

ありがとうございます。 できました! ただ、どうしてもエラーのヤツだけできません。 ifじゃないのでしょうか? #include<stdio.h> double calc_tasu(double a,double b); double calc_hiku(double a,double b); double calc_kakeru(double a,double b); double calc_waru(double a,double b); double calc_amari(double a,double b); int main(void) { double a,b; double calc_tasu2,calc_hiku2,calc_kakeru2,calc_waru2,waru3,calc_amari2; a=10.0; b=0; calc_tasu2=calc_tasu(a,b); calc_hiku2=calc_hiku(a,b); calc_kakeru2=calc_kakeru(a,b); calc_waru2=calc_waru(a,b); calc_amari2=calc_amari(a,b); printf("た す= %f\n",calc_tasu2); printf("ひ く= %f\n",calc_hiku2); printf("かける= %f\n",calc_kakeru2); printf("わ る= %f\n",calc_waru2); printf("あまり= %f\n",calc_amari2); return 0; } double calc_tasu(double a,double b) { double wk; wk=(a+b); return wk; } double calc_hiku(double a,double b) { double wk; wk=(a-b); return wk; } double calc_kakeru(double a,double b) { double wk; wk=(a*b); return wk; } double calc_waru(double a,double b) { double wk; if (wk=(a*b)) { return wk; } else { printf("わ る= エラー\n"); return wk; } } double calc_amari(double a,double b) { double wk; wk=((int) a%(int) b); return wk; }

関連するQ&A