0

こんにちは、タイプ HP-35 の電卓の基本機能の実装に問題があります。私は初心者で、コードをまとめるのに苦労しています。基本機能は足し算、引き算、掛け算、割り算で、助けが必要です。と。

以下は私のメインファイルです:

/* 
* File:   main.cpp
* Author: Brenton
*
* Created on 20 September 2013, 12:10 AM
*/

#include <cstdlib>
#include "HPStack.h"
#include <iostream>
#include <sstream>
using namespace std;

/*
* 
*/
int main(int argc, char** argv) {
HPStack stack;
string line;
while (getline(cin, line)) {
stringstream expression(line);

string token;

while (expression >> token) {
if (isdigit(token[0])) {
stack.push(atof(token.data()));

//From here I am having trouble, I don't know what the code is.

} else if (token == "+") { // Addition code

} else if (token == "-") { // Subtraction code

} else if (token == "/") { // Division code

} else if (token == "*") { // Multiplication code

double x = stack.pop();
double y = stack.pop();
stack.push(y + x);
}
}
cout << stack.peek();
}
return 0;
}

以下は、私が作成したスタックのこれまでのコードです。

/* 
* File:   HPStack.cpp
* Author: Brenton
* 
* Created on 20 September 2013, 12:07 AM
*/

#include "HPStack.h"

HPStack::HPStack() {
}

HPStack::HPStack(const HPStack& orig) {
}

HPStack::~HPStack() {
}

以下は、ヘッダー ファイルの私のコードです。

/* 
* File:   HPStack.h
* Author: Brenton
*
* Created on 20 September 2013, 12:10 AM
*/

#ifndef HPSTACK_H
#define HPSTACK_H

class HPStack {
public:
HPStack();
void push(double);
double pop();


private:
double stack;
double x, y, z, t;

};

#endif /* HPSTACK_H */

これがばかげた質問のように思えることはわかっていますが、数学コードで実際に何をしているのかはまったくわかりませんが、試しています. どんな助けでも大歓迎です

4

2 に答える 2

0

これは非常に一般的な質問ですが、HP35 が RPN 計算機であると仮定すると、加算コードは単純にスタックから 2 つの値を取り出し、それらを加算し、結果をスタックにプッシュします。減算関数も同様ですが、正しい順序で減算するようにしてください。

明らかに、スタックの実装も完了する必要があります。C++ を使用していて、追加の機能を追加する予定がない場合は、std::stack<double>代わりに使用してください。

ウィキペディアを見ると、RPN 電卓ではないようです。おそらく演算子の優先順位を処理しようとしているに違いないと思いますか?

于 2013-09-19T15:21:26.747 に答える