从阵列中找到最高,最低和平均5个数字的程序

时间:2015-09-17 05:40:24

标签: c++ arrays

我的作业是编写一个程序,找出用户输入的数组中最高,最低和平均5个数字。这是我的问题,用户不必输入所有5个数字。但必须至少输入2个数字。

我已完成整个程序我在开头遇到问题,下面是我遇到问题的代码:

// Ask for name and explain program
cout << "Please enter your name: ";
cin >> name;
cout << endl;
cout << "Hi " << name << ", please enter up to 5 whole numbers." << endl;
cout << "I will find the HIGHEST, LOWEST, and AVERAGE number." << endl;

// Loop through users input
for (int i = 0; i < SIZE; i++)
{
    cout << "Enter number " << (i + 1) << " : ";
    cin >> number[i];

    // Validate that the user has entered atleast 2 numbers
    if (i >= 1 && i < 4)
    {
        cout << "Do you wish to enter another number (Y/N)? : ";
        cin >> continue_game;

        // Validate that the user only enters Y/N
        while (continue_game != 'Y' && continue_game != 'y' && continue_game != 'N' && continue_game != 'n')
        {
            cout << "Please type in (Y/N): ";
            cin >> continue_game;
        }

        // What happens if user chooses NO
        if (continue_game == 'N' || continue_game == 'n') 
        {
            i = 5;
        }

        // What happens if user chooses YES
        else if (continue_game == 'Y' || continue_game == 'y')
        {
            i = i;
        }
    }
}

问题:如果用户在第二个数字后面按了“否”,则剩余的元素将获得一个与其对应的数字,如:-8251616。有没有办法确保元素被指定为零或保持空白请明天帮助它,我无法弄明白。

SIZE = 5

2 个答案:

答案 0 :(得分:2)

当用户拒绝时,请勿设置i = 5。只需使用break;语句结束循环。

此外,是的情况下的i = i;语句是无用的。

当您获得最高,最低和平均值时,请确保仅查看从0i-1的值,因此您无法访问数组的未初始化元素

答案 1 :(得分:1)

如果你真的想要零,你需要用零填充数组:

int successor(const int& n)

int number[5] = {};

但是,如果用户输入的数字少于5,则输出错误。您应该做的是计算用户输入的数量,然后使用int number[5]; for (int i = 0; i < 5; ++i) { number[i] = 0; } 0的值。

建议,使用count - 1代替break;