```// compensation.cpp, Maggie Johnson
// Description: A program to decide the best of three methods of compensation

#include <iostream>
using namespace std;

// constants which are used throughout the program
#define kPricePerUnit 225  // average price of a pair of shoes
#define kWeeklyWage 600    // current weekly wage - Method 1
#define kSalary 7.0        // hourly salary - Method 2
#define kHoursPerWeek 40    // number of hours worked - Method 2
#define kCommission2  0.10  // commission - Method 2
#define kCommission3 0.2    // commission - Method 3
#define kBonusPerUnit 20    // bonus  - Method 3

// A function to get the weekly sales of units
int GetInput() {
int units;
cout << "Enter number of units sold per week: ";
if (!(cin >> units)) {
cout << "Numbers only" << endl;
return 0;
} else {
return units;
}
}

// This one is easy - always the same: \$600 per week
void CalcMethod1() {
cout << "Method 1: " << kWeeklyWage << endl;
}

// Method 2: A salary of \$7.00 per hour plus a 10% commission on sale
void CalcMethod2(int Sales) {
double PerHour, TotalPay, Commission;

PerHour = kSalary * kHoursPerWeek;
Commission = (Sales * kPricePerUnit) * kCommission2;
TotalPay = PerHour + Commission;
cout << "Method 2: " << TotalPay << endl;
}

// Method 3: No salary, but 20% commissions and \$20 for each pair of shoes sold
void CalcMethod3(int Sales) {
int Extra;
double TotalPay, Commission;

Extra = kBonusPerUnit * Sales;
Commission = (Sales * kPricePerUnit) * kCommission3;
TotalPay = Extra + Commission;
cout << "Method 3: " <<  TotalPay << endl;
}

main() {
int WeeklySales;    // our input variable

WeeklySales = GetInput();
if (WeeklySales == 0)
return 0;
CalcMethod1();
CalcMethod2(WeeklySales);
CalcMethod3(WeeklySales);
}
```