По-видимому, в моей программе есть ошибка вычисления, но я просто не могу ее найти.
Единственная информация, которую я имею о том, почему возникает ошибка вычисления, - это следующая обратная связь, предоставленная MyProgrammingLab (сайт, который автоматически проверяет код, чтобы увидеть, является ли он неправильным или нет). Я не знаю, какие значения были введены для годовой смертности и годовой рождаемости, чтобы вызвать ее. Может быть, я прав, но MyProgrammingLab ошибается? Честно говоря, все мои собственные тесты кажутся прекрасными.
Ожидаемый результат:
Year 1: 200 176
Year 2: 176 154
Year 3: 154 135
Year 4: 135 118
Year 5: 118 103
Year 6: 103 90
Year 7: 90 79
Фактический выход:
Year 1: 200 199
Year 2: 199 198
Year 3: 198 197
Year 4: 197 196
Year 5: 196 195
Year 6: 195 194
Year 7: 194 193
Я построил программу в соответствии со следующим назначением:
В популяции рождаемость представляет собой процентное увеличение населения из-за рождаемости, а коэффициент смертности - это процентное сокращение населения из-за смерти. Напишите программу, которая запрашивает следующее:
- Начальный размер популяции (минимум 2) (Prompt
Enter starting size:
) - Годовая рождаемость (Prompt
Enter annual birth rate:
) - Годовая смертность (Подсказка
Enter annual death rate:
) - Количество лет для отображения (минимум 1) (Подсказка
Enter years to display:
)
Затем программа должна отображать начальную популяцию и прогнозируемую популяцию в конце каждого года. Он должен использовать функцию, которая вычисляет и возвращает прогнозируемый новый размер населения через год. Формула
N = P(1 + B)(1 - D)
где N - новый размер популяции, P - предыдущий размер популяции, B - коэффициент рождаемости, D - коэффициент смертности. Годовой коэффициент рождаемости и смертность - это типичное число рождений и смертей в год на 1000 человек, выраженное в десятичной форме. Так, например, если, как правило, около 32 рождений и 26 смертей на 1000 человек в данной популяции, коэффициент рождаемости составит 0,32, а коэффициент смертности составит 0,26.
Мой код:
#include <iostream>
using namespace std;
int projectedNewSize(float population, float annualBirthRate, float annualDeathRate) {
float annualBirthRate2 = annualBirthRate / 1000;
float annualDeathRate2 = annualDeathRate / 1000;
int newpopulation = population * (1 + annualBirthRate2) * (1 - annualDeathRate2);
return newpopulation;
}
int main() {
int populationStartingSize = 0;
float annualBirthRate = 0;
float annualDeathRate = 0;
int numberOfYearsToDisplay = 0;
do {
cout << "Enter starting population size: ";
cin >> populationStartingSize;
cout << "Enter annual birth rate: ";
cin >> annualBirthRate;
cout << "Enter annual death rate: ";
cin >> annualDeathRate;
cout << "Enter years to display: ";
cin >> numberOfYearsToDisplay;
} while (!(populationStartingSize >= 2) || !(numberOfYearsToDisplay >= 1));
int population;
for (int i = 1; i <= numberOfYearsToDisplay; i++) {
cout << "Year " << i << ": " << populationStartingSize << " ";
population = projectedNewSize(populationStartingSize, annualBirthRate, annualDeathRate);
cout << population << endl;
populationStartingSize = population;
}
system("pause");
return 0;
}