• ベストアンサー

加減剰余を筆算で表示したい

加減剰余を筆算の形式で表示するプログラムを作りたいんです。でも、割り算と掛け算は中途計算も表示しなくてはならなくてどうやっていいのかわかりません。関数を使用して作りたいんですが・・・ご助力お願いいただければと思います。

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

  • ベストアンサー
  • mssine
  • ベストアンサー率24% (38/156)
回答No.1

割り算はがんばってみて #include <stdio.h> #include <iostream.h> void main(void) { void hissan(char func, int i, int j); int a,b,c; char buf[32]; cout << "input 1 = "; cin >> buf; a=atoi(buf); cout << "input 2 = "; cin >> buf; b=atoi(buf); cout << "func(+-*/) = "; cin >> buf; c=buf[0]; hissan(c, a, b); } void hissan(char func, int i, int j) { void tasizan(char, int, int); void hikizan(char, int, int); void kakezan(char, int, int); int k; switch (func){ case '+':tasizan(func,i,j); break; case '-':hikizan(func,i,j); break; case '*':kakezan(func,i,j); break; case '/': break; } } void tasizan(char func, int i, int j) { printf(" %8d\n",i); printf("%c)%8d\n",func,j); printf("---------------\n"); printf(" %8d\n",i+j); } void hikizan(char func, int i, int j) { printf(" %8d\n",i); printf("%c)%8d\n",func,j); printf("---------------\n"); printf(" %8d\n",i-j); } void kakezan(char func, int i, int j) { int k, w, digit, ans; char buf[16],fmt[32]; sprintf(buf,"%d",abs(j)); digit = strlen(buf); ans=i*j; printf(" %8d\n",i); printf("%c)%8d\n",func,j); printf("---------------\n"); for(k=0; k<digit; k++){ sprintf(fmt," %%%dd\n",8-k); w=j%10; j=j/10; printf(fmt,i*w); } printf("---------------\n"); printf(" %8d\n",ans); }

yuki85
質問者

お礼

早速の回答ありがとうございます!!もう、本当に崖っぷちで・・・!!参考にさせていただきます☆