C ++获得“第二个命令行参数”

时间:2018-07-26 08:34:48

标签: c++ unix

我正在按照以下条件进行作业:

任务:

“完美”数字是一个等于其除数之和的整数 (其中1被视为除数)。例如6是完美的,因为它的 除数分别为1、2和3,1 + 2 + 3为6。类似地,28是完美的,因为 等于1 + 2 + 4 + 7 + 14。 “非常好的”数字是一个整数,其“坏”的大小为 除数之和与数字本身之差–不是 大于指定值。例如,如果最大不良度设置为 3,有12个“非常好”的数字小于100:2、3、4、6、8、10、16、18, 20、28、32和64; 您的任务是编写一个相当不错的C ++程序, 小于指定值的指定最大严重性的数量。极限值 执行程序时,将最大和最大错误指定为命令行参数。

第一个问题如下:

通过编写一个程序来打印正整数(错误0),最大数值小于 10000,以单个空格分隔。例如,挺好100应该打印628。

我在这里做了什么

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char** argv) 
{
   int candidate = 0;
   int badness;
    for(int i=2; i<10000; i++)
    { //Start for loop 1

        for (int j = 1; j<i; j++)
        { //Start for loop 2
            if (i % j == 0)
            {
                  candidate += j;

            }


        } //End for loop 2

        if(candidate %i ==0)
        { //Start of if 1
        cout << i << endl;
        } //End of if 1


            candidate = 0;


    } // End of loop 1
    return 0;
}

但是第二个问题问:

扩展程序,以便可以将不良限制指定为第二个命令行参数。例如,相当好100 3将打印2 3 4 6 8 10 16 18 20 28 3264。

问题是,如何获得在代码中使用的“第二个命令行参数”?

注意:如果有帮助的话,我们需要在Unix终端(cygwin)上针对自动标记系统测试代码。

希望这是足够的信息,如果不是,这很令人困惑, 谢谢。

1 个答案:

答案 0 :(得分:-1)

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>

using namespace std;

int main(int argc, char** argv) 
{
    int n = 10000;
    int badnessLimit = 0;

    if (argc > 1) {
        istringstream nArg(argv[1]);
        if (!(nArg >> n) || !nArg.eof()) {
            cerr << "Invalid first argument\n";
            return 1;
        }
    }
    if (argc > 2) {
        istringstream badnessArg(argv[2]);
        if (!(badnessArg>> badnessLimit) || !badnessArg.eof()) {
            cerr << "Invalid second argument\n";
            return 2;
        }
    }
    cout << "           n = " << n << '\n';
    cout << "badnessLimit = " << badnessLimit << '\n';

    return 0;
}

https://wandbox.org/permlink/qGV2LdRnYxhU8Eh8