Kanjut SHELL
Server IP : 172.16.15.8  /  Your IP : 3.15.239.0
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  ]

Current File : /home/lmking1/prog3.cpp
// 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;

}



Stv3n404 - 2023