编写一个程序,读取所有命令行参数并打印平均值 c++
Write a program that reads in all the command line arguments and prints the average, c++
//review3
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
using namespace std;
double average;
int main(int argc, char* argv[])
{
int num1 = atoi (argv[1]);
int num2 = atoi (argv[2]);
int num3 = atoi (argv[3]);
average = ((num1 + num2 + num3) / 3);
cout << average << endl;
}
如果我需要计算所有命令行参数的平均值,我不确定如何解决这个问题?这就是我使用 3 个 CLA 的方式,但我不确定在不知道这个问题的一定数量的 CLA 的情况下我会怎么做。如果您必须找到中位数,有没有人也知道如何做到这一点?
下面是
一个简单的程序。
int sum = 0 ;
for ( int i = 1; i < argc; i++ )
{
sum = sum + atoi(argv[i]) ; //Exclusion of argv[0] is no incidence...
}
然后你可以用总和做任何你想做的事情
在主int argc
的声明中是给出的参数数量。您可以使用 for 循环循环遍历参数并计算平均值:
// Your includes here
// ...
int main(int argc, char* argv[])
{
int average = 0;
for(int i = 1; i < argc; i++) // argv[0] is the name of your program, so we are skipping it
{
average += atoi(argv[i]);
}
average = average / (argc - 1);
}
argc 会给你给出 main(( 的参数数量。
请注意,argc 将为 ONE,如果您不提供参数,则不是零,因为 argv[0] 是可执行文件的文件名。
要获得中位数,以下方法应该可以解决问题:
float median;
// Get a sorted list of the integers
std:list<int> args;
for(int i = 1; i < argc; i++)
{
args.push_back(atoi(argv[i]));
}
args.sort();
// Extract median from the sorted array of integers
int middle_index = args.size() / 2;
if (args.size() % 2 == 1)
{
// For odd number of values, median is middle value
median = args[middle_index];
}
else
{
// For even number of values, median is average of the two middle values
median = (args[middle_index-1] + args[middle_index]) / 2.0;
}
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数
- 如何在 C++11 中创建具有命令行参数大小的动态数组?
- 需要有关如何设置getopt_long以正确传递命令行参数的建议
- Bash 脚本和命令行参数