- ベストアンサー
教えてください
学校の課題で、割り算を筆算の形式で表示するプログラムを作りたいのですが、voidを使用して結果表示関数と割り算の関数を別に作って作りたいのです。printfなどはまだ未習なのでfor,while,if~else,などごく初心者向けのものをしようした方法で教えていただけないでしょうか
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご自分で筆算はしてみられましたよね? そうしたら、その手順において、何を出力すればよいかを見てみて下さい。 516÷18の場合、 まず51÷18をして、51ー18*2=15をしますよね。 このとき筆算では、商の2、割る数18×商2=36、 割られる数51ー36(割る数×商)=15(余り) を出力することになります。 ですから、割られる数をX,割る数Yとして、 余りZ=X%Y 割る数×商=X-Z 商=(X-Z)/Y で求められます。 これを必要な回数ループをまわして繰り返せば基本的にできると思います。 あとは、割られる数や割る数の桁数を数えて、 一回一回のループで、何と何のわり算をするのかを決める部分と、何回ループを回すのかを決めればよいかと思います。 小数の場合は、ループの回数を増やせば良いだけです。 (小数点以下二桁までなら+2回)
その他の回答 (2)
- seven_star
- ベストアンサー率33% (1/3)
すいません。少し荒いですが参考にしてみてはどうでしょうか。 そのままコピーしてもらってもちゃんと動きます。 int wari(int a,int b){ int g=0; while(a>=b){ a=a-b; g++; } return g; } void ans(int k){ int j=k; printf("答えは%dです\n",j); } #include<stdio.h> void main() { int k,j; int c; printf("k÷j= としてkとjの値を入力してください\n"); printf("k=");scanf("%d",&k); printf("j=");scanf("%d",&j); c=wari(k,j); ans(c); } このようにvoidをつかい結果表示関数と割り算の関数を別に作るのはむりかと・・・ すいません こんな答えしかできません。
- adaypajimy
- ベストアンサー率20% (201/964)
voidっていうのは(返却値などが)"空っぽ"の意味です。voidを使用するというのは意味がわかりません。 printfなどの文字を出力をする関数を使わないで、プログラムが完成しているのか、どのように確認するのでしょうか。
お礼
早速のご解答ありがとうございます。そして、自分の勉強不足と説明不足に恥じ入るばかりです。実は四則演算すべてを筆算で表示するプログラムを作りたいのですが、割り算だけがどうしてもできないのです。関数の値呼び出しを使用して作りたいのです。イメージとしては main() { warizan_data() } void warizan_data() { } という形式にしたいのです 実際に作成途中のものを乗せたかったのですが長すぎて乗せられませんでした。 あとprintfを使わずに結果表示関数を作り、coutでがんばらなければならないのです。こちらは解決しましたので割り算だけご助言いただければと思います。ちなみに筆算の途中経過も表示しなければならず、ユーザに余りを求めるか、小数点第2位まで求めるか選択してもらうということになっています。 拙い説明で申し訳ないですがどうかよろしくお願いします
お礼
ありがとうございます☆プログラム、完成しました!!遅々とした進みなんですが・・・本当にお世話になりました☆