2015年8月9日日曜日

ちょっとしたプログラムを書きました。(C言語で電卓をつくる編)

課題内容:2つの数値の演算を行う電卓を作成する。(まずは)C

1.処理概要 起動パラメータとして「x」と「y」の2つの整数、演算子を受け取り、 足し算と引き算と、その足し算と引き算だけを使って割り算または、掛け算を行い答えを表示する。
2.入力パラメータ仕様 入力パラメータは、起動パラメータとして受け取る。
x 演算子 y
また、終了時は、quitもしくはexitで終了させる。
3.入力チェック仕様 入力パラメータは、以下の規則によりチェックする。
x:数値であること                       
y:数値であること                    
式:+、-、÷、×であること  
4.計算
(a)足し算
(b)引き算
(c) 割算 xからyを繰り返し引きます。 x<y となるまで繰り返します。 繰り返した回数が商となる。
(d) 掛算 xを答えに繰り返し足します。 足した回数がyとイコールとなるまで繰り返す。
5.出力編集 出力はコンソールに行うものとし、以下の形式で出力する。
N:式
--------------------------------
99999 N 99999 = 99999 ... 99999
6.例外処理
以下の場合はエラーとしメッセージを出力する。
ゼロ除算:yがゼロである            →       0割りはできません
7.制約事項 本計算機システムは整数(正数)のみの対応とする。
以下、作成したサンプルコード。ガサツですが。。。(2015/08/11 エラー処理が未熟なので後でアップデートする)
#include 

int main()
    {
      int x,y,z,i;
      char op;
      char str[1024];
/*1つ目の数値入力判定*/
      do {
              printf("1つ目の数値を入力してください:");
              scanf("%d",&x);
              gets(str);
             } while (str[0]);
             
/*演算子入力判定*/
     printf("演算子を入力してください:");
     scanf("%c",&op);
     switch(op){
              case '-': break;
              case '+': break;
              case '*': break;
              case '/': break;
              default:
              printf("計算式が誤っています\n");
              return 0;
             }
             
/*1つ目の数値入力判定*/
     do {
         printf("2つ目の数値を入力してください:");
         scanf("%d",&y);
         gets(str);
        } while (str[0]);

/*計算部*/
     switch(op){
         case '-': z = x - y; break;
         case '+': z = x + y; break;
         case '*':z=0;
             for(i=1;i<=y;i++){z=z+x;} break;
         case '/':
         /*yがゼロ*/
         if(y==0){printf("ゼロ割りはできません\n");return 0;};
             z=x-y;
         for(i=1;y<=z;i++){z=z-y;}
             z=i; break;
              }
              
/*表示部分*/
     printf("--------------------------------\n"
        "%d %c %d = %d\n",x,op,y,z);
        return 0;

}

0 件のコメント:

コメントを投稿