1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
#include <iostream>
#include <string>
using namespace std;
enum PeriodName
{
PRECAMBRIAN, CAMBRIAN, ORDOVICIAN, SILURIAN, DEVONIAN, CARBONIFEROUS,
PERMIAN, TRIASSIC, JURASSIC, CRETACEOUS, PALEOGENE, NEOGENE
//Enum type that holds the period names
};
class Period
{
public :
Period()
{
curPeriod = PRECAMBRIAN;
};//Period set to precambrian
Period(PeriodName name)
{
curPeriod = name;
};//period set to periodName
string toString(PeriodName name)
{
string periodName;
switch(name)
{
case PRECAMBRIAN:
periodName = "Precambrian";
break;
case CAMBRIAN:
periodName = "Cambrian";
break;
case ORDOVICIAN:
periodName = "Ordovician";
break;
case SILURIAN:
periodName = "Silurian";
break;
case DEVONIAN:
periodName = "Devonian";
break;
case CARBONIFEROUS:
periodName = "Carboniferous";
break;
case PERMIAN:
periodName = "Permian";
break;
case TRIASSIC:
periodName = "Triassic";
break;
case JURASSIC:
periodName = "Jurassic";
break;
case CRETACEOUS:
periodName = "Cretaceous";
break;
case PALEOGENE:
periodName = "Paleogene";
break;
case NEOGENE:
periodName = "Neogene";
break;
}
return periodName;
};//Returns date as string
int toInt(PeriodName name)
{
int startingYear;
switch(name)
{
case PRECAMBRIAN:
startingYear = 4500;
break;
case CAMBRIAN:
startingYear = 570;
break;
case ORDOVICIAN:
startingYear = 500;
break;
case SILURIAN:
startingYear = 435;
break;
case DEVONIAN:
startingYear = 395;
break;
case CARBONIFEROUS:
startingYear = 345;
break;
case PERMIAN:
startingYear = 280;
break;
case TRIASSIC:
startingYear = 225;
break;
case JURASSIC:
startingYear = 192;
break;
case CRETACEOUS:
startingYear = 136;
break;
case PALEOGENE:
startingYear = 65;
break;
case NEOGENE:
startingYear = 23;
break;
}
return startingYear;
};//Returns date as integer
void increment(PeriodName);//Does nothing if period is already Neogene
private:
PeriodName curPeriod;
};
int main()
{
Period period;
Period per(CAMBRIAN);
PeriodName name;
char ch = 'y';
int range1, range2;
while (ch=='y' || ch=='Y')
{
cout << "Enter the range of the prehistoric dates" << endl
<< "(in million years, seperated by a space): ";
cin >> range1 >> range2;
cout << endl << "Period Name\t Starting Date" << endl;
cout << "-----------\t -------------" << endl;
for (name = PRECAMBRIAN; name <= NEOGENE; name = PeriodName(name+1))
{
if(period.toInt(name) <= range1 && period.toInt(name)>=range2)
cout << period.toString(name) << "\t\t"
<< period.toInt(name) << endl;
}
cout << endl;
cout << "Do you want to continue?" << " (Press 'n' to exit): ";
cin >> ch;
cout << endl;
}
return 0;
}
|