Miscellaneous > Programming & Networking

This piece of code works but.....i dunno it could have been better.

(1/1)

Bazoukas:
This program will categorize each salesperson according to the sales he made: Enter the number of how many SalesPersons salary status you want to review.
Enter -1 ANYTIME to exit the program,
and to display and review the data you entered up to that point:3
Enter the amount of dollars in sales:   9000
Enter the amount of dollars in sales:   15000
Enter the amount of dollars in sales:   590
200_299            | 1
300_399            | 0
400_499            | 0
500_599            | 0
600_699            | 0
700_799            | 0
800_899            | 0
900_999            | 0
1000_1099            | 2


 And here is the code  


#include <iostream.h>
#include <iomanip.h>

int main () {
   
   int Number_Of_Workers;
   int ComisionRange1=200;
   int ComisionRange2=300-1;
   int Array_Comision[9];
   const int Base_Salary=200;
   int Comision, sales;
   
   for (int Array_loop=0; Array_loop<9; Array_loop++)
   {
      
      Array_Comision[Array_loop]=0;
   }
   
   cout<<"This program will categorize each salesperson according to the sales he made: ";
   cout<<"Enter the number of how many SalesPersons salary status you want to review.\n";
   cout<<"Enter -1 ANYTIME to exit the program,\n";
   cout<<"and to display and review the data you entered up to that point";
   cout<<":";
   cin>>Number_Of_Workers;
   
   for (int loop=1; loop<=Number_Of_Workers; loop++)
   {
      
      cout<<"Enter the amount of dollars in sales:\t";
      cin>>sales;
      if (sales==-1)
      {
         cout<<"This program will end now.\n";
         cout<<"--------------------------\n";
         cout<<"Comision Range------Grouping\n";
         cout<<"----------------------------\n";
         break;
         
      }
      
      Comision=Base_Salary+(9*sales/100);
      
      
      
      if (Comision >=200 && Comision<=299)
         ++Array_Comision[0];
       else if(Comision >=300 && Comision<=399)
         ++Array_Comision[1];
       else if  (Comision >=400 && Comision<=499)
         ++Array_Comision[2];
       else if  (Comision >=500 && Comision<=599)
         ++Array_Comision[3];
       else if  (Comision >=600 && Comision<=699)
         ++Array_Comision[4];
       else if  (Comision >=700 && Comision<=799)
         ++Array_Comision[5];
       else if  (Comision >=800 && Comision<=899)
         ++Array_Comision[6];
       else if  (Comision >=900 && Comision<=999)
         ++Array_Comision[7];
       else if (Comision >=1000)
         ++Array_Comision[8];
      
   }
   
   
   
   while (ComisionRange1<=900 && ComisionRange2<=1000)
      
{
   
   for (int Display_Array=0; Display_Array<9; Display_Array++)
   {
      
      cout<<ComisionRange1<<"_"<<ComisionRange2<<setw(14)<<" | " << Array_Comision[Display_Array]<<endl;
      ComisionRange1+=100;
      ComisionRange2+=100;
      
   }
   
}

return 0;

}

 So how would you write a program that goes Far beyond 999 - 1000 and it went all the way to 10,000 - 10,999

  Doing it my way, it would take A LOOOOOOOT of If else statements.

[ November 04, 2002: Message edited by: bazoukas ]

[ November 04, 2002: Message edited by: bazoukas ]

flap:
Replace that big if else block with:

Array_Comision[(int)((Comision - 200) / 100)]++;

e.g. if your commission is 770:
(770 - 200) / 100 = 5.7

The (int) casts this result to an integer, thus truncating it to 5 (the index of the array you want to write to.)

Bazoukas:

quote:Originally posted by flap:
Replace that big if else block with:

Array_Comision[(int)((Comision - 200) / 100)]++;

e.g. if your commission is 770:
(770 - 200) / 100 = 5.7

The (int) casts this result to an integer, thus truncating it to 5 (the index of the array you want to write to.)
--- End quote ---


Thats it?

 I'll be damed.

Bazoukas:
Holly shit dude. I never thought of that.  That was very clever indeed.

 Thank you man.

Navigation

[0] Message Index

Go to full version