// Marvyn Jesse De La Torre CS1A Chapter 6, p. 374, #16
//
/*************************************************************************
* PROJECT TRANSIENT POPULATION
* This program projects population changes over a number of years.
*
* INPUT
* Starting population, birth rate, death rate, arrivals, departures,
* and number of years
*
* OUTPUT
* Projected population for each year
*************************************************************************/
#include <iomanip>
#include <iostream>
using namespace std;
// Function Prototype
double calculatePopulation( double population, double birthRate,
double deathRate, int arrivals, int departures) ;
int main( )
{
int startingPopulation;
double birthRate, deathRate, population;
int arrivals, departures, years;
// Get Population Information
cout << "Starting population: " ;
cin >> startingPopulation;
cout << "Annual birth rate (percent): " ;
cin >> birthRate;
cout << "Annual death rate (percent): " ;
cin >> deathRate;
cout << "People moving into the area each year: " ;
cin >> arrivals;
cout << "People leaving the area each year: " ;
cin >> departures;
cout << "Number of years to project: " ;
cin >> years;
population = startingPopulation;
// Display Population Projection
cout << "\n YEAR\t PROJECTED POPULATION" << endl;
cout << "---------------------------" << endl;
for ( int year = 1 ; year <= years; year++ )
{
population = calculatePopulation( population, birthRate, deathRate,
arrivals, departures) ;
cout << year << "\t " << population << endl;
}
return 0 ;
}
/*************************************************************************
* calculatePopulation
* Returns the population after one year.
*************************************************************************/
double calculatePopulation( double population, double birthRate,
double deathRate, int arrivals, int departures)
{
double births = population * ( birthRate / 100.0 ) ;
double deaths = population * ( deathRate / 100.0 ) ;
return population + births - deaths + arrivals - departures;
}
Ly8gTWFydnluIEplc3NlIERlIExhIFRvcnJlICAgICBDUzFBICAgICBDaGFwdGVyIDYsIHAuIDM3NCwgIzE2Ci8vCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFBST0pFQ1QgVFJBTlNJRU5UIFBPUFVMQVRJT04KICogVGhpcyBwcm9ncmFtIHByb2plY3RzIHBvcHVsYXRpb24gY2hhbmdlcyBvdmVyIGEgbnVtYmVyIG9mIHllYXJzLgogKgogKiBJTlBVVAogKiAgIFN0YXJ0aW5nIHBvcHVsYXRpb24sIGJpcnRoIHJhdGUsIGRlYXRoIHJhdGUsIGFycml2YWxzLCBkZXBhcnR1cmVzLAogKiAgIGFuZCBudW1iZXIgb2YgeWVhcnMKICoKICogT1VUUFVUCiAqICAgUHJvamVjdGVkIHBvcHVsYXRpb24gZm9yIGVhY2ggeWVhcgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBGdW5jdGlvbiBQcm90b3R5cGUKZG91YmxlIGNhbGN1bGF0ZVBvcHVsYXRpb24oZG91YmxlIHBvcHVsYXRpb24sIGRvdWJsZSBiaXJ0aFJhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZWF0aFJhdGUsIGludCBhcnJpdmFscywgaW50IGRlcGFydHVyZXMpOwoKaW50IG1haW4oKQp7CiAgICBpbnQgc3RhcnRpbmdQb3B1bGF0aW9uOwogICAgZG91YmxlIGJpcnRoUmF0ZSwgZGVhdGhSYXRlLCBwb3B1bGF0aW9uOwogICAgaW50IGFycml2YWxzLCBkZXBhcnR1cmVzLCB5ZWFyczsKCiAgICAvLyBHZXQgUG9wdWxhdGlvbiBJbmZvcm1hdGlvbgogICAgY291dCA8PCAiU3RhcnRpbmcgcG9wdWxhdGlvbjogIjsKICAgIGNpbiA+PiBzdGFydGluZ1BvcHVsYXRpb247CgogICAgY291dCA8PCAiQW5udWFsIGJpcnRoIHJhdGUgKHBlcmNlbnQpOiAiOwogICAgY2luID4+IGJpcnRoUmF0ZTsKCiAgICBjb3V0IDw8ICJBbm51YWwgZGVhdGggcmF0ZSAocGVyY2VudCk6ICI7CiAgICBjaW4gPj4gZGVhdGhSYXRlOwoKICAgIGNvdXQgPDwgIlBlb3BsZSBtb3ZpbmcgaW50byB0aGUgYXJlYSBlYWNoIHllYXI6ICI7CiAgICBjaW4gPj4gYXJyaXZhbHM7CgogICAgY291dCA8PCAiUGVvcGxlIGxlYXZpbmcgdGhlIGFyZWEgZWFjaCB5ZWFyOiAiOwogICAgY2luID4+IGRlcGFydHVyZXM7CgogICAgY291dCA8PCAiTnVtYmVyIG9mIHllYXJzIHRvIHByb2plY3Q6ICI7CiAgICBjaW4gPj4geWVhcnM7CgogICAgcG9wdWxhdGlvbiA9IHN0YXJ0aW5nUG9wdWxhdGlvbjsKCiAgICAvLyBEaXNwbGF5IFBvcHVsYXRpb24gUHJvamVjdGlvbgogICAgY291dCA8PCAiXG5ZRUFSXHRQUk9KRUNURUQgUE9QVUxBVElPTiIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPDwgZW5kbDsKCiAgICBmb3IgKGludCB5ZWFyID0gMTsgeWVhciA8PSB5ZWFyczsgeWVhcisrKQogICAgewogICAgICAgIHBvcHVsYXRpb24gPSBjYWxjdWxhdGVQb3B1bGF0aW9uKHBvcHVsYXRpb24sIGJpcnRoUmF0ZSwgZGVhdGhSYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycml2YWxzLCBkZXBhcnR1cmVzKTsKCiAgICAgICAgY291dCA8PCB5ZWFyIDw8ICJcdCIgPDwgcG9wdWxhdGlvbiA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBjYWxjdWxhdGVQb3B1bGF0aW9uCiAqIFJldHVybnMgdGhlIHBvcHVsYXRpb24gYWZ0ZXIgb25lIHllYXIuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkb3VibGUgY2FsY3VsYXRlUG9wdWxhdGlvbihkb3VibGUgcG9wdWxhdGlvbiwgZG91YmxlIGJpcnRoUmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlYXRoUmF0ZSwgaW50IGFycml2YWxzLCBpbnQgZGVwYXJ0dXJlcykKewogICAgZG91YmxlIGJpcnRocyA9IHBvcHVsYXRpb24gKiAoYmlydGhSYXRlIC8gMTAwLjApOwogICAgZG91YmxlIGRlYXRocyA9IHBvcHVsYXRpb24gKiAoZGVhdGhSYXRlIC8gMTAwLjApOwoKICAgIHJldHVybiBwb3B1bGF0aW9uICsgYmlydGhzIC0gZGVhdGhzICsgYXJyaXZhbHMgLSBkZXBhcnR1cmVzOwp9