Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;输入不限的计算器 我是C++语言初学者,我想知道是否有任何方法来编写一个无限输入的程序。例如:我想写一个计算器程序只是为了添加数字。这很简单,但是有没有一种方法可以让用户添加任意数量的数字,而不必询问他想要多少数字。这样,如果他想添加三个数字,他只需键入“1+1+1”,或者如果他想添加四个数字,他会在前一行的末尾添加“+1”。这样,用户就不会被固定数量的输入所束缚,或者不需要询问他需要多少输入。为了做这个,我需要知道C++中的哪些函数_C++ - Fatal编程技术网

C++;输入不限的计算器 我是C++语言初学者,我想知道是否有任何方法来编写一个无限输入的程序。例如:我想写一个计算器程序只是为了添加数字。这很简单,但是有没有一种方法可以让用户添加任意数量的数字,而不必询问他想要多少数字。这样,如果他想添加三个数字,他只需键入“1+1+1”,或者如果他想添加四个数字,他会在前一行的末尾添加“+1”。这样,用户就不会被固定数量的输入所束缚,或者不需要询问他需要多少输入。为了做这个,我需要知道C++中的哪些函数

C++;输入不限的计算器 我是C++语言初学者,我想知道是否有任何方法来编写一个无限输入的程序。例如:我想写一个计算器程序只是为了添加数字。这很简单,但是有没有一种方法可以让用户添加任意数量的数字,而不必询问他想要多少数字。这样,如果他想添加三个数字,他只需键入“1+1+1”,或者如果他想添加四个数字,他会在前一行的末尾添加“+1”。这样,用户就不会被固定数量的输入所束缚,或者不需要询问他需要多少输入。为了做这个,我需要知道C++中的哪些函数,c++,C++,是。这是可能的。您可以使用ints的vector。从向量中获取用户输入并计算元素之和。把这个放在循环中,这就是你想要的。试试这个: #include <iostream> int main (int argc, char *argv[]) { for (int i = 0; i < argc; i++) std::cout << "argument " << i << " is " << argv[i]

是。这是可能的。您可以使用
int
s的
vector
。从
向量中获取用户输入并计算元素之和。把这个放在循环中,这就是你想要的。

试试这个:

#include <iostream>

int main (int argc, char *argv[])
{
    for (int i = 0; i < argc; i++)
        std::cout << "argument " << i << " is " << argv[i] << std::endl;
    return 0;
}
#包括
int main(int argc,char*argv[])
{
对于(int i=0;istd::cout您可以使用while循环读取标准输入。(std::cin)从while循环读取一些基本代码,并将输入添加到sum中,如下所示:

#include <iostream>
#include <string>
#include <cstdlib>

int main(){
    std::string line = "";
    double sum = 0.0;
    while(line != "end"){
        std::cout<<"The current sum is: "<<sum<<std::endl;
        std::cout<<"Enter the number you would like to add or \"end\" to exit: ";
        std::cin>>line;
        sum += atof(line.c_str());
    }
    std::cout<<"The final sum is: "<<sum<<std::endl;
}
#包括
#包括
#包括
int main(){
std::string line=“”;
双和=0.0;
while(行!=“结束”){

std::cout对于包含中缀运算符的表达式的解析和求值,没有什么比

在C++中实现这一点与任何提供容器和(或内置支持)的语言都没有什么区别,它提供了S和S。在这里,您将希望使用<代码> STD::Stuts和。对程序的输入可以是一行(包含用户键入的表达式),从<代码> STD::CIN < /代码>中读取。(标准输入或控制台)输入到

std::string


这不仅允许表达式具有任何合理的长度,而且还可以正确处理括号子表达式的任意嵌套、特殊函数的求值和自定义运算符。

听起来您需要loopsHow我会使用循环来完成此操作吗?要完全解决此问题,您需要编写一个简单的解析器。您可能希望看起来是into反向波兰语符号,有时用于计算器,因为它比标准符号更容易解析。如果你只想支持+和-或*和/你只需要使用循环,因为你只需要从左边计算。但是,如果你想使用这四种符号的任意组合,你需要解析你的表达式。我建议你学习g如何使用Lex/Yacc或(Flex/Bison)对于更复杂的表达式。有一个简单的Lex/Yacc calculatorBest代码响应的示例代码。有一个警告:
atof
在遇到错误字符串时会自动退出。允许程序通过测试字符串结尾为NULL的
end
参数来捕获大多数错误。@user4581301非常正确,但正如OP所述他们是初学者,我不想把他们和额外的错误检查代码混淆。对于初学者来说,理解“提供正确的输入”比理解“验证正确的输入”更容易.同意。一步一个脚印。输入数据。测试数据。输入正确的数据。测试数据。操作数据。测试数据。我只是想留下一些碎屑供以后使用。@user4581301说得很好,我完全同意。谢谢你的批评。避开OP请求的一部分*而不被问及他想要多少数字*工作正常,但工作量增加了一倍。一个loop加载向量,然后另一个循环处理向量。如果需要存储输入,例如考虑操作顺序,@defube对堆栈和队列的建议更好。