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
|
//An Internet service provider has three different subscription packages for its customers:
//Package A: For $9.95 per month 10 hours of access are provided. Additional hours
//are $2.00 per hour.
//Package B: For $14.95 per month 20 hours of access are provided. Additional
//hours are $1.00 per hour.
//Package C: For $19.95 per month unlimited access is provided.
//Write a program that calculates a customer's monthly bill. It should ask which package
//the customer has purchased and how many hours were used. It should then display
//the total amount due.
//Input Validation: Be sure the user only selects package A, B, or C. Also, the number
//of hours used in a month cannot exceed 744.
//Modify the Program in Programming Challenge 23 so that it also displays how much
//money Package A customers would save if they purchased packages B or C, and how
//much money Package B customers would save if they purchased Package C. If there
//would be no savings, no message should be printed.
//Months with 30 days have 720 hours, and months with 31 days have 744 hours. February,
//with 28 days, has 672 hours. Enhance the input validation of the Internet Service
//Provider program by asking the user for the month (by name), and validating that
//the number of hours entered is not more than the maximum for the entire month.
//Here is a table of the months, their days, and number of hours in each.
#include <iostream>
#include <string>
using namespace std;
//prototypes
double total(int type, int hours);
int main()
{
cout << "Which package did you purchase?: A, B, or C?\n\n"
"A - $9.95 per month with 10 hours allowed. More hours are $2.00 per hour.\n"
"B - $14.95 per month with 20 hours allowed. More hours are $1.00 per hour.\n"
"C - $19.95 per month with infinite hours allowed.\n\n";
char package;
cin >> package;
while (package != 'A' && package != 'a' && package != 'B' && package != 'b' && package != 'C' && package != 'c')
{
cout << "Invalid selection. Please only enter the letter A, B or C.";
cout << "Enter your package type A, B or C: ";
cin >> package;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
switch (package)
{
//Package A: For $9.95 per month 10 hours of access are provided. Additional hours
//are $2.00 per hour.
case 'A':
case 'a':
int packagetype;
packagetype = 1;
cout << "\nyou picked A.\n\nHow many hours were you on the internet?:\n\n";
int nethours;
cin >> nethours;
while (nethours > 744)
{
cout << "\nThat is impossible.";
cout << "How many hours were you on the internet?:\n\n";
cin >> nethours;
}
break;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Package B: For $14.95 per month 20 hours of access are provided. Additional
//hours are $1.00 per hour.
case 'B':
case 'b': cout << "\nYou picked B.\n\nHow many hours were you on the internet?:\n\n";
cin >> nethours;
{
if (nethours <= 20)
{
cout << "Your bill is 14.95.";
}
else if (nethours > 20)
{
while (nethours > 744)
{
cout << "That is impossible. Re-enter your hours.:";
cin >> nethours;
}
//need calculation
}
break;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Package C: For $19.95 per month unlimited access is provided.
case 'C':
case 'c': cout << "\nYou picked C.\nHow many hours were you using internet?:\n";
cin >> nethours;
//
while (nethours > 744)
{
cout << "That is impossible. Please re-enter your internet hours.\n";
cin >> nethours;
}
//
if (nethours <= 744)
{
cout << "Your bill is $19.95.\n";
}
break;
default: cout << "Not a valid answer.\n";
}
total(packagetype, nethours);
cin.get ();
return 0;
}
}
//price calculator~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
double total(int type, int hours)
{
if (type == 1)
{
if (hours <= 10)
{
cout << "\nyou have a bill of 9.95 in your account because you did not go over the limit.\n";
}
else if (hours > 10)
{
cout << "\nYou have a bill of " << (hours - 10.00) * 1.00 + 9.95 << " in your account because of extra fees.\n\nYou could have saved "
<< ((hours - 20) * 2.00 + 14.95) - ((hours - 10.00) * 1.00 + 9.95) << " dollars if you had package B.\n";
}
else
{
cout << "invalid answer to A";
}
cout << "Press enter to continue.";
cin.get();
cin.get();
}
}
|