gpt4 book ai didi

c++ - 我的程序中是否存在计算错误?

转载 作者:IT老高 更新时间:2023-10-28 23:01:52 25 4
gpt4 key购买 nike

显然我的程序中某处存在计算错误,但我根本找不到。

关于为什么会出现计算错误,我所拥有的唯一信息是 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个)(提示输入起始大小:)
  • 年出生率(提示输入年出生率:)
  • 年死亡率(提示输入年死亡率:)
  • 要显示的年数(最少1)(提示输入要显示的年数:)

然后程序应显示每年年底的起始人口和预计人口。它应该使用一个函数来计算并返回一年后预计的新人口规模。公式是

  N = P(1 + B)(1 - D) 

其中 N 是新的人口规模,P 是以前的人口规模,B 是出生率,D 是死亡率。年出生率和死亡率是每 1000 人一年中的典型出生和死亡人数,以小数表示。因此,例如,如果在给定人口中,每 1000 人中通常有大约 32 人出生和 26 人死亡,则出生率为 0.032,死亡率为 0.026。

我的代码:

#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;
}

最佳答案

所以,答案是

不需要将每年的出生率和每年的死亡率除以 1000。由于每年的出生率是按每 1000 人的年出生人数计算的,因此不需要再除以 1000。

因此删除这些行

float annualBirthRate2 = annualBirthRate / 1000;
float annualDeathRate2 = annualDeathRate / 1000;

变化

int newpopulation = population * (1 + annualBirthRate2) * (1 - annualDeathRate2);

int newpopulation = population * (1 + annualBirthRate) * (1 - annualDeathRate);

所以,最终的代码应该是这样的:

#include <iostream>
using namespace std;

int projectedNewSize(float population, float annualBirthRate, float annualDeathRate) {

int newpopulation = population * (1 + annualBirthRate) * (1 - annualDeathRate);
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;
}

你们在评论部分讨论过,没有回答这个问题..

关于c++ - 我的程序中是否存在计算错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26842176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com