Write a program to help students learn the periods of geologic time. The program should let the user enter a range of prehistoric dates (in millions of years), and then output the periods that are included in that range. Each time this output is done, the user is asked if he or she wants to continue. The goal of the exercise is for the student to try to figure out when each period began, so that he or she can make a chart of geologic time.
Within the program, represent the periods with an enumeration type made up of their names. You will probably want to create a function that determines the period corresponding to a date, and another function that returns the string corresponding to each identifier in the enumeration. Then you can use a For loop to output the series of periods in the range. The periods of geologic time are given here:
Period Name Starting Date (millions of years)
Neogene 23
Paleogene 65
Cretaceous 136
Jurassic 192
Triassic 225
Permian 280
Carboniferous 345
Devonian 395
Silurian 435
Ordovician 500
Cambrian 570
Precambrian 4500 or earlier
Use functional decomposition to solve this problem. Be sure to use good coding style and documenting comments. The prompts and error messages that are output should be clear and informative.
Code:
#include <iostream>
#include <string>
using namespace std;
void printResults(int);
void getRange();
enum Periods {NEOGENE, PALEOGENE, CRETACEOUS, JURASSIC, TRIASSIC, PERMIAN, CARBONIFEROUS,
DEVONIAN, SILURIAN, ORDOVICIAN, CAMBRIAN, PRECAMBRIAN};
int main()
{
bool goAgain = true;
Periods finRange;
int range[2];
while(goAgain) {
range = getRange();
printResults(range);
goAgain = askAgain();
}
system ("pause");
return 0;
}
void printResults(int finRange);
{
cout << "The geologic period of your input is " << finRange << ".";
return getRange;
}
void getRange()
{
int range õ> x.Hm << "Please enter the year (in BC) to see the time period." << endl;
cin << range;
if (range >= '23' && range <= '64')
finRange = Neogene;
else if (range >= '65' && range <= '135')
finRange = Paleogene;
else if (range >= '136' && range <= '191')
finRange = Cretaceous;
else if (range >= '192' && range <= '224'
finRange = Jurassic;
else if (range >= '225' && range <= '279')
finRange = Triassic;
else if (range >= '280' && range <= '344')
finRange = Permian;
else if (range >= '345' && range <= '394')
finRange = Carboniferous;
else if (range >= '395' && range <= '434')
finRange = Devonian;
else if (range >= '435' && range <= '499')
finRange = Silurian;
else if (range >= '500' && range <= '569')
finRange = Ordovician;
else if (range >= '570' && range <= '4499')
finRange = Cambrian;
else if (range >= '4500')
finRange = Precambrian;
}