Question
Write a program that produces a bar chart showing the population growth of Prairieville, a small town in the Midwest, at 20-year intervals during the
Write a program that produces a bar chart showing the population growth of Prairieville, a small town in the Midwest, at 20-year intervals during the past 100 years. The program should read in the population figures for 1900, 1920, 1940, 1960, 1980, and 2000 from a file named People.txt. It is understood that the first value represents the population in 1900 (for example, 2843), the second the population in 1920 and so on. For each year it should display the year, followed by one space followed by a bar consisting of one asterisk for each 1,000 people. (The program should round UP so that a population of 1 would generate one asterisk -- as would 1000, while a population of 1,001 would generate two, etc.)
Prompts And Output Labels. The program is not interactive so there are no prompts. The first line of the output should be PRAIRIEVILLE POPULATION GROWTH and the second line of the output should be (each * represents 1000 people) after which the main output follows.
Input Validation. The program should validate each population count read. If the population is ever negative, the program should print the message "BAD DATA" on a line by itself and not process any more data.
Here is what I have so far..
code:
#include
int main() { ifstream Inputfile; Inputfile.open("people.dat"); // Open file if (!Inputfile) // Test for open errors cout << "Error opening file. ";
int Pop; // Population
// Display Population Bar Chart Header cout << "PRAIRIEVILLE POPULATION GROWTH " << "(each * represents 1000 people) ";
for (int Year = 1; Year <= 6; Year++) { // One iteration per year switch (Year) { case 1 : cout << "1900 "; break; case 2 : cout << "1920 "; break; case 3 : cout << "1940 "; break; case 4 : cout << "1960 "; break; case 5 : cout << "1980 "; break; case 6 : cout << "2000 "; break; }
Inputfile >> Pop; // Read from file
Pop /= 1000; // calculate one per 1000 people
for (int Arisk = 1; Arisk <= Pop; Arisk++) { // Display one asterisk per iteration // One iteration per 1000 people cout << "*"; }
cout << endl; } Inputfile.close(); // To close file return 0; }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started