• ベストアンサー

自作関数における複数の値の受け取り方

void shoutoamari(int wararerukazu, int warukazu, int kekka[]) { kekka[0] = wararerukazu / warukazu; kekka[1] = wararerukazu % warukazu; return; } 上記の自作関数を使って入力された2つの整数の商と余りを求めるプログラムを作りたいのですが、複数の値を受け取る方法がわかりません。よろしくお願いしますm(_ _)m

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

  • ベストアンサー
  • skbler
  • ベストアンサー率9% (69/691)
回答No.2

これで試して下さい。無事にコンパイル出来ました! main関数の変数aとbは適当な値を入れてみて下さい。 下記の場合の実行結果は、2と0が表示されます。 #include<stdio.h> void shoutoamari(int wararerukazu,int warukazu,int kekka[]) { kekka[0]=wararerukazu/warukazu; kekka[1]=wararerukazu%warukazu; return; } int main(void) { int a=6; int b=3; int c[]={0,0}; shoutoamari(a,b,c); printf("%d %d\n",c[0],c[1]); return 0; }

cermet
質問者

お礼

ご回答ありがとうございますm(_ _)m やったらうまくいきました。 配列の渡し方も理解できました!

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

その他の回答 (2)

回答No.3

   こんな方法もある。 #include <stdio.h> struct result{ int quotient; int surplus; }; int *divide0(int dividend, int divisor) { static int array[2]; array[0] = dividend / divisor; array[1] = dividend % divisor; return array; } struct result divide1(int dividend, int divisor) { struct result result; result.quotient = dividend / divisor; result.surplus = dividend % divisor; return result; } int main (void) { int dividend, divisor; int *answer0; struct result answer1; scanf("%d %d", ÷nd, &divisor); answer0 = divide0(dividend, divisor); printf("商 %d, 余り %d\n", *answer0, *(answer0 + 1)); answer1 = divide1(dividend, divisor); printf("商 %d, 余り %d\n", answer1.quotient, answer1.surplus); return 0; }  

cermet
質問者

お礼

ご回答ありがとうございますm(_ _)m 丁寧に書いていただいてありがとうございます。 でもまだ自分にはわからない部分もあります・・・(structとか) わかるようにもっとがんばって勉強したいと思います。

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

x に求めたい値が入っているとすると、例えば、以下のようになります。 int x; int kkk[2]; shoutoamari( x, kkk ); printf( "syou=%d?n", kkk[0] ); printf( "amari=%d?n, kkk[1] );

cermet
質問者

お礼

ご回答ありがとうございますm(_ _)m なるほど、こうやるんですね。教科書を見たらポインタがどうとかしか書いてなくてかなり意味不明でした・・・

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

関連するQ&A