简单平均计算器的问题

Issues with simple mean calculator

本文关键字:问题 计算器 简单      更新时间:2023-10-16
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
//Make sure there is an argv[1] to check
if (1 < argc) {
    std::string option = std::string(argv[1]);
    if ("mean" == option) {
        float sum = 0;
        cout << (argc)<<"n";
        for (int i = 0; i<= argc; i++){
        sum = sum+reinterpret_cast<int>(argv[i]);
        }
        cout<<(sum)<<"n";
        cout<<(argc)<<"n";
        cout<<(sum/argc)<<"n";
    }
return 0
}

我是 c++ 的新手,但这段代码为我输入的内容返回了可笑的值。 例如,我使用命令行"homework1 表示 1 2 3 4",值以千万亿为单位。 如果有帮助,我正在使用 64 位机器,我是 c++ 的新手,所以我不确定问题是什么。 感谢您的任何帮助。

首先,reinterpret_cast不会将字符串转换为整数。使用类似 std::stod .(取决于要执行的错误检查量。

二、这些界限

for (int i = 0; i<= argc; i++)

将不起作用,因为 argv[0] 是可执行文件的名称,而 argv[argc] 是空指针。用

for (int i = 2; i < argc; i++){
    sum += std::stof(argv[i]);
}

请注意,编译器需要支持 c++11 才能正常工作。(std::stof等已添加到标准的 C++11 修订版中。如果没有,您将需要使用 sum += strtof(argv[i], NULL); .有关更多详细信息,请参阅 strtof 的文档。