質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
パース

パースとは、一定の文法に従って記述されたテキスト文書を解析し、データ構造の集合体に分解・変換することを呼びます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

782閲覧

scanf()関数を使わずにdouble型、四則演算電卓を作りたい

hiro66m

総合スコア1

パース

パースとは、一定の文法に従って記述されたテキスト文書を解析し、データ構造の集合体に分解・変換することを呼びます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/05/21 06:49

前提・実現したいこと

scanf()関数を使わずにdouble型、四則演算電卓を作りたい
参考WEBサイト
https://edu.clipper.co.jp/pg-2-64.html

該当のソースコード

#include <stdio.h>
main()
{
double a, b, ans;
char op;

printf( "加減乗除(+,-,*,/)ができます。指定例:2+5、終了時はq\n" ); while( 1 ) { printf( "ready : " ); if( scanf( "%lf %c %lf", &a, &op, &b ) != 3 ) break; switch( op ) { case '+': ans = a + b; break; case '-': ans = a - b; break; case '*': ans = a * b; break; case '/': if( b == 0.0 ) { printf( "Error!(ゼロでの割算はできません)\n" ); continue; } ans = a / b; break; default: printf( "Error!(演算記号の指定が誤りです)\n" ); continue; } printf( "--> %g\n", ans ); } printf( ".... Power OFF\n" );

}

C++

試したこと

パーサの作ってみましたが、
文字列から計算ができませんでした。

補足情報(FW/ツールのバージョンなど)

Xcodeを使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

文字列から計算ができませんでした。

ということは文字列を数に変換するところがわからないのでしょうか。
そうでしたら、標準関数の atofでdouble型に変換しましょう。

使い方はatof()を見てください。

別のことが分からないのであれば、質問に追加しましょう。

投稿2021/05/21 07:35

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

fgets関数を使いましょう

投稿2021/05/21 07:10

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

C++なんだよね?

C++

1#include <iostream> 2 3int main() { 4 using namespace std; 5 6 double a, b, ans; 7 char op; 8 9 cout << "加減乗除(+,-,*,/)ができます。指定例:2+5、終了時はq\n"; 10 while (1) { 11 cout << "ready : " << flush; 12 if ( cin >> a >> op >> b ) { 13 switch (op) { 14 case '+': ans = a + b; break; 15 case '-': ans = a - b; break; 16 case '*': ans = a * b; break; 17 case '/': 18 if (b == 0.0) { 19 cout << "Error!(ゼロでの割算はできません)\n"; 20 continue; 21 } 22 ans = a / b; break; 23 default: cout << "Error!(演算記号の指定が誤りです)\n"; 24 continue; 25 } 26 cout << "--> " << ans << endl; 27 } else break; 28 } 29 cout << ".... Power OFF\n"; 30}

投稿2021/05/21 08:00

編集2021/05/21 08:37
episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問