#c
#c
Вопрос:
Привет всем, я изучаю функции, поэтому я взял старую практическую программу и модифицировал ее для использования функций. Однако моя проблема заключается в том, что когда приходит время отображать комиссию, которую я рассчитываю, я получаю неправильные значения. Любая помощь будет оценена. У меня все работает, кроме комиссионных цен.
Код
#include <iostream>
#include <iomanip>
using namespace std;
int ID;
double salary, pcs, printer, accessory, maint;
double pcbase = 8000.00, printerbase = 1500.00, accbase = 1000.00, maintbase = 500.00;
double pccomm = .15, printercomm = .10,acccomm = .05, maintcomm = .08;
double calcComm(double sales, double base, double percent);
void display(double, double, double, double);
int main()
{
cout<<"Enter Salesman IDn";
cin>>ID;
while (ID != -999)
{
cout<<"Enter base salaryn";
cin>>salary;
cout<<"Enter PC salesn";
cin>>pcs;
pccomm = calcComm(pcs, pcbase, pccomm);
cout<<"Enter Printer Salesn";
cin>>printer;
printercomm = calcComm(printer, printerbase, printercomm);
cout<<"Enter Accessory Salesn";
cin>>accessory;
acccomm = (accessory, accbase, acccomm);
cout<<"Enter Maintenance Salesn";
cin>>maint;
maintcomm = (maint, maintbase, maintcomm);
display(pccomm, printercomm, acccomm, maintcomm);
cout<<"nnEnter Salesman ID or -999 to quitn";
cin>>ID;
}
system ("PAUSE");
return 0;
}
double calcComm(double sales, double base, double percent)
{
double commission;
if (sales < base)
commission = 0;
else
commission = sales * percent;
return commission;
}
void display(double pccomm, double printercomm, double acccomm, double maintcomm)
{
cout<<"Salesman ID:"<<ID;
cout<<"nProduct"<<" Sales Amount"<<" Commissionn";
cout<<"Personal Computers"<<" "<<pcs<<" "<<pccomm;
cout<<"nPrinters"<<" "<<printer<<" "<<printercomm;
cout<<"nAccessories"<<" "<<accessory<<" "<<acccomm;
cout<<"nMaintenance"<<" "<<maint<<" "<<maintcomm;
double total = 0,totaldue = 0;
total = pccomm printercomm acccomm maintcomm;
totaldue = total salary;
cout<<"nnnTotal Commission "<<total;
cout<<"n Base Pay "<<salary;
cout<<"n Total Due "<<totaldue;
}
Мой желаемый результат
Salesman ID: 111
Product Sales Commission
Personal Computer 5000.00 0.00
Printers 2000.00 50.00
Accessories 600.00 0.00
Mainteance 1000.00 40.00
Total Commission 90.00
Base Pay 1234.56
Total Due 1324.56
Комментарии:
1. -1 Что такое ввод? Каков ожидаемый результат? Каков фактический результат? Каков желаемый алгоритм?
2. Извините, входные данные представляют собой конкретные суммы продаж для каждого продукта; продажи ПК, продажи принтеров, продажи аксессуаров и продажи технического обслуживания. Для получения комиссионных по любому товару он должен находиться в определенном диапазоне (продажи ПК> 8000.00 и т. Д.) Вывод находится в функции отображения, выводящей всю собранную информацию и комиссию, рассчитанную в функции calcComm.
3. Нет. Нам нужны числа. Ввод и вывод, ожидаемые и фактические. И формула. Не тот, который написан в коде, потому что мы знаем, что компилятор и компьютер в порядке.
4. Лучше. Каков фактический результат?
Ответ №1:
У вас есть:
acccomm = (accessory, accbase, acccomm);
Я предполагаю , что так и должно быть acccomm = calcComm(accessory, accbase, acccomm);
.
То же самое для расчета maintcomm
. В том виде, в каком вы написали код, он будет использовать оператор запятой, который просто вычисляется до последнего операнда.
Комментарии:
1. Это была моя проблема, спасибо, что поймали то, чего я не уловил: p
Ответ №2:
комиссия = продажи * база * процент?
Вам нужно объяснить, что такое «базовая» переменная? это цена за единицу товара? Сумма до вычета комиссии? Я предполагаю, что продажи — это количество единиц, а процент очевиден.
Ответ №3:
Как дикое предположение, поскольку вы не включили какой-либо образец ввода или вывода. Было бы необычно не платить комиссию до тех пор, пока не будет достигнута база, но выплачивать комиссию, рассчитанную по всем показателям продаж, если база была достигнута.
Вы имели в виду
commission = (sales-base) * percent;
вместо
commission = sales * percent;