• ベストアンサー

プログラムについてです。

main関数内でキーボードから入力された2つの整数について、その整数値の和差乗除をユーザ定義関数shisoku()内で計算し、main関数内で結果を出力するプログラムを作成せよ。 ただし、すべて局所変数で構成し、大域変数を使ってはならない。 僕は和差、乗除はできるんですが和差乗除ができません。

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.5

おっと、そこまでできているのであれば、  ・wasaという関数名を、本来のshisokuに変える  ・shisoku関数に、積と商のための引数を加える(名前は積/商を端的に示すようにする)  ・xとyという変数名を、和/差を端的に示すような名前に付け替える  ・main関数で、積や商のための変数定義を追加する  ・main関数で、shisoku関数で計算した積や商を出力するコードを追加する というような修正を行なえば、完成するのではないかと思います。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.6

ただし、 >int*ap,*bp; >wasa(a,b,ap,bp); >printf("%d+%d=%d\n",a,b,*ap); >printf("%d-%d=%d\n",a,b,*bp); ここのコードは正しくないですけどね。 和/差のための変数ap,bpは、ポインター変数である必要はありません。 というか、ポインター変数にしてはいけません。ふつうのint型です。 apとbpのアドレスをwasa(本来はshisoku)に渡すようにしないと。

tsuryo1119
質問者

お礼

ちょっとよくわからないんですが具体的にどういうことですか?

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.4

>#3さん shisoku関数の戻り値はどこでも使っていないので、不要だと思います。 main関数の戻り値の型をintにする方がよいと思います。 >質問者さん 途中経過でかまいませんので、できている部分を見せていただけますでしょうか。

tsuryo1119
質問者

補足

#include<stdio.h> void wasa(int a,int b,int*x,int*y); int main(void) { int a,b; int*ap,*bp; printf("a=:"); scanf("%d",&a); printf("b=:"); scanf("%b",&b); wasa(a,b,ap,bp); printf("%d+%d=%d\n",a,b,*ap); printf("%d-%d=%d\n",a,b,*bp); return 0; } void wasa(int c,int d,int*x,int*y) { *x=c+d; *y=c-d; }

すると、全ての回答が全文表示されます。
  • KEIS050162
  • ベストアンサー率47% (890/1879)
回答No.3

要は、引数がひとつなら、戻り値を計算結果として記述できるが、複数の計算結果を引数でやり取りする方法が分からない、ということでしょうか? 例えば、変数x、yをを引数として、戻り値を計算結果にする場合は、例えば下記の様な方法。 int Wa( int x, int y ) {     return( x+y ); } void main( void ) {     int x,y,r;     … x、yを入力する手段をここに記述     r = Wa( x,y );         … 計算結果を表示 } これを複数の計算結果をやり取りする様に改造する場合は、ポインター渡しを使うと良いでしょう。例は和の場合だけですが、工夫して四則演算に応用してみてください。 int Shisoku( int x, int y, int *wa ) {     *wa = x + y;     return( 0 ); } void main( void ) {     int x,y,r,wa;     … x、yを入力する手段をここに記述     r = Shisoku( x,y, &wa );         … 計算結果を表示 } 四則演算全部やる場合は、waの他に、sa, jou, jo などの変数をポインター渡しにしてあげれば出来るかと思います。 戻り値は、入力した計算できない場合の異常値を返す(たとえば、0除算の時など)に利用すると良いでしょう。 これでヒントになりますでしょうか?

tsuryo1119
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.2

>乗除はできるんですが では、これはどういう意味で書かれたのでしょうか。

tsuryo1119
質問者

補足

そっちも下と一緒で掛け算と割り算をさせるプログラムはつくれたんですが、四則演算をさせることができないんです。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

>僕は和差、乗除はできるんですが和差乗除ができません。 何をおっしゃっているのか、全くわかりません。 足し算 引き算 かけ算 割り算 が、できるんでしょうか。それともできないんでしょうか。

tsuryo1119
質問者

補足

そういうことじゃなくて、足し算と引き算だけを計算させるのは作れたんですが、足し算、引き算、掛け算、割り算の4つの計算をさせるのができないんです。

すると、全ての回答が全文表示されます。

関連するQ&A