【C初心者】+,-,*./について【電卓】
次のようなプログラミングを作りました。
きちんと実行できるのですが見ての通りややこしいプログラムになってます
#include <stdio.h>
int main(void)
{
int ope;
double n2,n3;
printf("整数1:"); scanf("%lf",&n2);
puts("ADD=0,SUB=1,MUL=2,DIV=3");scanf("%d",&ope);
printf("整数2:"); scanf("%lf",&n3);
switch (ope) {
case 0 : printf("計算すると%fになります.?n",n2+n3); break;
case 1 : printf("計算すると%fになります.?n",n2-n3); break;
case 2 : printf("計算すると%fになります.?n",n2*n3); break;
case 3 : printf("計算すると%fになります.?n",n2/n3); break;
default: printf("計算出来ません.?n"); break;
}
return (0);
}
printf文をcaseの中で5回も使っています
私としては(以下適当です、すいません)
case 0 : sign= + ;break;
case 1 : sign= -
・
・
・
default : 計算できません error=1 ;break;
if (error != 0)
printf("計算すると%fになります.?n",n2 sign n3);
みたいな感じを想像しているのですが
signはintとかcharのどれにしたらよくて
signに"+"をいれて計算させるにはどうしたらいいんでしょう
No.2ベストアンサー
- 回答日時:
"+"、"-"、"*"、"/" 等の「演算子」を変数signに入れて演算させることはできません。
変数に代入できるのは「被演算子」です。
四則演算部分を関数に移動すればmain中で計算結果を出力するprintf を1行にすることはできますが、その関数のなかで switch~case文により分岐することは変わらないですが。
※本質的な違いは無いですが、main中で計算結果を出力するprintfが1行でスッキリ書けるという違いです。
int main{void)
{
:
double result;
:
if(error = calc(ope, n2, n3, &result) != 0)
printf(計算すると%fになります.\n",result);
:
:
}
int calc(int w_ope, double w_n2, double w_n3, double *res)
{
int status = 0;
switch (w_ope)
case 0 : res = w_n2 + w_n3); break;
case 1 : res = w_n2 - w_n3); break;
case 2 : res = w_n2 * w_n3); break;
case 3 : res = w_n2 / w_n3); break;
default: status = -1;
}
return status;
}
No.1
- 回答日時:
そういう事はできません。
以下のようにする事ならできます。
double ans;
case 0:
ans = n2 + n3;
break;
case 1:
ans = n2 - n3;
break;
...
printf("計算すると%lfになります\n", ans);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既約分数の表示プログラム
-
10個出力で改行したいのですが...
-
printf で二進表示を行いたい。
-
Cのdoubleの浮動小数点表示につ...
-
万年カレンダーのC言語プログラ...
-
ホームページをC言語で作りたい...
-
(C言語)西暦年月日を入力して...
-
コマンドラインに出力した文字...
-
質問ですが
-
4の倍数を論理演算で表す。。
-
printfの出力内の文字をdefine...
-
C言語 プログラミング
-
strcmp
-
C言語での、年複利の計算方法...
-
コンパイルエラーについて
-
アドレスの比較について
-
入力したお金の金額からお札の...
-
3つの整数を画面から入力して...
-
C言語について
-
プログラミング言語C
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について
-
printf で二進表示を行いたい。
-
cshの文字列操作(0埋め)
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
テキストカーソル位置の取得
-
strcmp
-
unsigned int型について
-
c言語でAからZまでを表示する...
-
printf( " %2d", p * q );
-
コマンドラインに出力した文字...
-
printfの出力内の文字をdefine...
-
ホームページをC言語で作りたい...
-
コマンドプロンプトがすぐ消える
-
小数点切捨て表示
-
【C言語教えてください】sin波...
-
switch分のケースを範囲数?に...
-
二つの整数値の大小比較
-
4の倍数を論理演算で表す。。
-
defineで定数が置き換えられな...
おすすめ情報