对于一个类分配,我们必须做一个“人口估算器”,我们使用腻子存储和编译我们的项目,因此该程序创建的文件就在那里。
这是作业的细节。
在人口中,出生率是指 出生人口,死亡率是百分比 因死亡人数减少。编写一个询问 对于以下内容:
The starting size of a population (minimum 2) The annual birth rate The annual death rate The number of years to display (minimum 1)
然后,程序应显示起始人口和 每年年底在屏幕和文件中的预计人口。 它应该使用一个函数来计算并返回预计的新 一年后的人口规模。公式为N = P(1 + B)(1-D) 其中:
N is the new population size, P is the previous population size, B is the birth rate, and D is the death rate.
年出生率和死亡率是典型的出生人数, 每千人一年中的死亡人数,以小数表示。因此对于 例如,如果通常每千人中大约有32例出生和26例死亡 给定人口中的人口,出生率将为.032,而 死亡率是.026。
我的程序在运行时确实会创建文件,但程序完成后其中没有任何内容。 for循环不会增加年份值,并且总体数量保持不变,这是我的代码。希望我能有所帮助。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
//N is the new population size.
//B is the birth rate.
//D is the death rate.
//P is the previous population size;
fstream File;
double b, d;
int p, pp, n, yrs;
cout << "Population Estimator" << endl;
cout << "Enter the starting size of the population: ";
cin >> p;
cout << endl;
while (pp <= 2)
{
cout << "Population must be 2 or more, enter again: ";
cin >> pp;
cout << endl;
}
cout << "Enter the Annual Birth Rate: ";
cin >> b;
b = b * p/1000;
cout << endl;
cout << "Enter the Annual Death Rate: ";
cin >> d;
d = d * p/1000;
cout << endl;
cout << "Enter the number of Years: ";
cin >> yrs;
cout << endl;
while (yrs <= 1)
{
cout << "Years must be 1 or more, enter again: ";
cin >> yrs;
cout << endl;
}
n = pp * 1+b * 1-d;
int year = 0;
fstream file("population.txt");
for (int counter = 1; counter <= yrs; counter++)
{
year + 1;
n * year;
File << "Year # " << year << " the population was at: " << pp << " and will be at: " << n << " by the end of the year." << endl;
cout << "Year # " << year << " the population was at: " << pp << " and will be at: " << n << " by the end of the year." << endl;
pp = n;
}
File.close();
return 0;
}
答案 0 :(得分:2)
陈述如下:
year + 1;
n * year;
是完全有效的C或C ++,但是它们的作用是计算值,然后将其丢弃。顺便说一句,这些与42;
(也很有效)没有什么不同。
假设您要更改这些变量,则应使用类似的东西(右边的注释是简写形式):
year = year + 1; // ++year;
n = n * year; // n *= year
您的文件为空的原因是因为您没有向其中写入任何内容。检查用于文件I / O的所有语句:
fstream File;
fstream file("population.txt");
File << blah blah blah;
File.close();
您会看到File
文件(大写F
)使用默认构造函数,这意味着它没有附加到任何实际文件中,并且 this 是一个您正在尝试写入。
您的小写file
文件是您附加到population.txt
的文件,但实际上您从未写过任何文件。
您应该选择一个文件句柄并坚持使用:-)
另一个问题:您的第一个while
循环可能应该使用p
而不是pp
(对n
的初始赋值)。这是要检查初始人口,而不是尚未分配的先前人口。
另外,while
循环应使用<
而不是<=
,因为后者意味着即使规范指出“人口的起始规模(至少2, )”。