C ++计算器程序

时间:2016-02-16 15:18:59

标签: c++ vector

我很熟悉C ++。我正在写一个主要基于向量的计算器。我希望每个操作都有一个向量,如果调用以下操作之一,则该值将由关联的向量操纵。 问题  1.我的流程是否正确?我是在正确的轨道上吗?  2.我是否需要一种替代方法来输入和检查char和int?

#include <stdio.h>
#include <iostream>
#include <vector>
#include <numeric>
#include <string>
#include <functional>
using namespace std;

vector <int> addition;
vector <int> subtraction;
vector <int> division;
vector <int> multiplication;

char operation;
int input;

int main() {

    cout << "Welcome to my Calculator Program" << endl;
    cout << "Enter your calculation: ";
    void operation();

    return 0;

}

void operation() {
    cin >> operation;
    switch (operation) {
    case '+':
        addition.push_back(input);
        break;
    case '-':
        subtraction.push_back(input);
        break;
    case '/':
        division.push_back(input);
        break;
    case '*':
        multiplication.push_back(input);
        break;
    default:
        cout << "You have entered an invalid operation" << endl;
    }
}

int add(vector <int> addition) {
    for (int i; i > addition.size(); i++) {
        int sum = std::accumulate(addition.begin(), addition.end(), 0);
    }
    return sum;
}

int sub(vector <int> subtraction) {
    for (int i; i > subtraction.size(); i++) {

    }
}

1 个答案:

答案 0 :(得分:2)

看起来你正走在正确的轨道上。要回答第二个问题,不,cin>>variable;会自动尝试将用户输入转换为variable类型。

这个程序的主要问题是它不会遵循操作顺序,这使得它作为计算器毫无用处。

当你operation()时,你并没有致电 void operation();;你正在宣布它。除了编译器警告之外什么都不会发生。

std :: accumulate()的整个想法是避免循环遍历向量或数组!如果你真的需要那些for循环,请重新评估。

修复缩进。它现在的方式使得很难理解程序的流程。查看:https://www.cs.northwestern.edu/academics/courses/211/html/c++-style.html#indent

当你可以避免它时,不要使用全局变量,在这种情况下你肯定可以。在这个程序中,它并不重要,但这是一个非常糟糕的习惯。

您是using namespace std但仍然将事物称为std::whatever。那是多余的。

我认为你应该回到教科书并通过一些更简单的例子。你的逻辑(大多数)是合理的,但是你缺乏对语法的掌握。没有什么可以感到羞耻的 - C ++很难,正如你所说,你是新的 - 但在开始比基本的例子更复杂的事情之前,你真的需要理解它。

祝你好运!