在C ++中动态添加变量

时间:2012-11-04 23:52:15

标签: c++ dynamic-variables

我正在为学校做一个项目。情况就是这样:

  
    

您应该可以为 n 学生数量输入权重。计算学生的平均体重,并输出有多少学生的体重低于65公斤。

  

到目前为止,我有这个C ++源代码示例:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int number_of_students;

    cout << "How many students would you like to add?: ";
    cin >> number_of_students;
    cout << endl;
    cout << endl;

    cout << "--------------------------------------------" << endl;
    cout << "---------- ENTER STUDENT'S WEIGHT ----------" << endl;
    cout << "--------------------------------------------" << endl;
    cout << endl;

    system("PAUSE");
    return EXIT_SUCCESS;
}

这基本上没什么,因为我现在被困了。我不知道当用户输入例如6名学生时,我可以添加6个新的重量变量。

修改

我可以进行平均体重计算,找出有多少学生体重低于65公斤。只有我坚持定义将添加多少学生的变量数量。 计算学生的平均体重,并输出有多少学生的体重低于65公斤。

4 个答案:

答案 0 :(得分:6)

您需要将权重存储在可变大小的某种容器中。我们非常建议使用标准库中的容器,最典型的选择是std::vector

#include<vector>
#include<algorithm>  //contains std::accumulate, for calculating the averaging-sum

int main(int argc, char *argv[])
{
    int number_of_students;

    cout << "How many students would you like to add?: ";
    cin >> number_of_students;
    cout << endl;
    cout << endl;

    cout << "--------------------------------------------" << endl;
    cout << "---------- ENTER STUDENT'S WEIGHT ----------" << endl;
    cout << "--------------------------------------------" << endl;
    cout << endl;

    std::vector<float> weights(number_of_students);

    for(int i=0; i<number_of_students; ++i) {
      cin >> weights[i];
    }

    cout << "Average is: " << std::accumulate(weights.begin(), weights.end(), 0.f)
                                      / number_of_students
      << std::endl;

    return EXIT_SUCCESS;
}

答案 1 :(得分:6)

您可以在循环中使用一个变量。例如:

for (int i = 0; i < number_of_students; i++) {
    int weight;
    cin >> weight;
    if (weight < 65)
        result++;
}

答案 2 :(得分:1)

使用 new 运算符创建数组整数。

cin >> number_of_students;
int* x = new int[number_of_students];

您现在拥有一个size=number_of_students数组。用它来存储重量。


编辑以这种方式处理它并不是最好的(处理内存泄漏等)。请注意评论和其他答案,尤其是使用 no intermediate storage std::vector 的解决方案。

答案 3 :(得分:1)

可能没有问题,但你可以创建一个像

这样长度的数组
int* a = new int[number_of_students];

for (int i = 0; i < number_of_students; i++) {
    cin >> a[i];
}

希望它有所帮助并祝你好运......