Динамически добавлять переменные в переполнение стека

Я работаю над проектом для школы. В этом случае:

Вы должны быть в состоянии ввести вес для 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 кг.

3

Решение

Использовать новый оператор для создания массив целых чисел.

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

Теперь у вас есть массив size=number_of_students, Используйте его для хранения весов.


редактировать Работа с этим способом, на самом деле, не самая лучшая (работа с утечками памяти и тому подобным). Обратите внимание на комментарии и другие ответы, особенно тот, который использует нет промежуточного хранилища и станд :: вектор основанное решение.

1

Другие решения

Вы можете использовать одну переменную в цикле. Пример:

for (int i = 0; i < number_of_students; i++) {
int weight;
cin >> weight;
if (weight < 65)
result++;
}
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;
}
6

может быть, не получая вопрос, но вы можете создать массив определенной длины, как

int* a = new int[number_of_students];

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

Надеюсь, это поможет и удачи …

1
По вопросам рекламы [email protected]