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

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

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

C++

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

Q&A

2回答

1342閲覧

c++ スタック計算

korason

総合スコア12

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

C++

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

0グッド

0クリップ

投稿2019/06/24 14:49

編集2019/06/24 15:42

c++ オブジェクト指向プログラミングでスタック計算がわかりません。
visual studioを使っています。 
(((2+3)(5+2))(4-8))を計算するオブジェクト指向でのプログラミングを教えてください。

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

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

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

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

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

gentaro

2019/06/24 15:34 編集

学校の課題であれば先生に質問しましょう。 課題が解決できないのも評価のうちなので、ここで助けを求めてカンニングするのはよくないです。
episteme

2019/06/24 19:34

スタック計算の何がわからんのかを記せ。 「具合が悪い」の一言で薬をくれる医者はいない。
guest

回答2

0

C++ で書けば、オブジェクト指向でのプログラミングになるのかな?
Stack という名前のクラスを定義すれば、スタック計算になるのかな?
実際には、スタックも逆ポーランド記法も使っていない
インチキプログラムを書いてみました。

C++

1#include <iostream> // cin, cout 2#include <sstream> // istringstream 3#include <string> // getline 4#include <cctype> // isdigit 5#include <cmath> // pow 6using namespace std; 7 8class Stack { 9 istringstream iss; 10 unsigned char c; 11public: 12 Stack(const string& s) : iss(s) { 13 double v = expr("+-*/^^"); 14 cout.precision(15); 15 c ? cout << " error\n" : cout << " " << v << "\n"; 16 } 17private: 18 int get() { return iss >> c ? c : (c = 0); } 19 double expr(const char *b) { 20 double v; 21 if (*b) // binary operators. power is right-associative. 22 for (v = expr(b + 2); c == b[0] || c == b[1]; ) 23 c == '+' ? v += expr(b + 2) : 24 c == '-' ? v -= expr(b + 2) : 25 c == '*' ? v *= expr(b + 2) : 26 c == '/' ? v /= expr(b + 2) : (v = pow(v, expr(b))); 27 else // number, parentheses or unary operators 28 get() == '.' || isdigit(c) ? iss.unget(), iss >> v ? get() : (c = 3): 29 c == '(' ? v = expr("+-*/^^"), c == ')' ? get() : (c = 2) : 30 c == '+' ? v = expr(b) : 31 c == '-' ? v = -expr(b) : (v = c = 1); 32 return v; 33 } 34}; 35 36int main() 37{ 38 string s; 39 while (cout << ">> ", getline(cin, s) && s != ".") Stack t(s); 40}

追記

3 + . + 5 がエラーにならないバグがあったの修正しました。

投稿2019/06/24 22:14

編集2019/06/26 08:42
kazuma-s

総合スコア8224

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

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

0

一応ヒントだけ。

スタックを使って計算するなら「逆ポーランド記法」についてググってみてください。
よくある課題ですので。

「オブジェクト指向でのプログラミング」という言葉の指している意味がどのようなものかわかりませんが、C++はオブジェクト指向言語のため、スタックを扱うクラスを使ってプログラミングすれば最低限の目的は果たせると思います。

投稿2019/06/24 16:08

gentaro

総合スコア8949

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問