【发布时间】:2015-10-12 00:14:52
【问题描述】:
我是 C++ 新手,并且对编译器似乎吐出我使用结构数组的尝试感到困惑。
在下面的程序中,编译器说无法将 Salesman 解析为类型。并且它没有在范围内声明。此外,编译器声称 struct Salesman 没有某些成员,例如 sales 或 comms,但它显然有。
#include <iostream>
#include <iomanip>
#include <sstream>
using namespace std;
double all_sales;
double all_coms;
Salesman salesmen[100];
final int MAX_MONTH = 2;
void calc_comp_total(int emp){
for(int i=1;i<=emp;i++){
all_sales+=salesmen[i].ytosales;
all_coms+=salesmen[i].ytocom;
}
}
struct Salesman{
double sales[MAX_MONTH] ={ };
double comms[MAX_MONTH] ={ };
string name;
double ytosales =0;
double ytocom =0;
}
void calc_personal_totals(Salesman s){
for(int i=0;i<2;i++)
{
s.ytosales += s.sales[i];
s.ytocom += s.comms[i];
}
}
void store_sales(double sal, double com, int m, Salesman s, string nam){
s.sales[m] = sal;
s.comms[m] = com;
s.name=nam;
}
double calculate_commission(double sales){
if (sales>=5000 && sales<10000)
return sales*0.1;
else if(sales>=10000&&sales<18000)
return sales*0.15;
else if(sales>=18000)
return sales*0.22;
else if(sales<5000)
return 0;
}
main(){
bool again = true;
int empl = 0;
while(again){
string n;
double in_sales;
cout<<"Enter employee name. n for next";
cin>>n ;
if(n=="n")
bool again = false;
else{
for(int i=1; i<MAX_MONTH; i++){
cout<<"Enter month"<< i << " sales";
cin>>in_sales;
store_sales( in_sales, calculate_commission(in_sales), i-1, salesmen[empl],n);
}
calc_personal_totals(salesmen[empl]);
empl++;
}
calc_comp_total(empl);
cout<<"\n Sales input is complete"
}
for(int i=0;i<empl;i++){
cout<<"\n "<< salesmen[i].name<<": "<<endl;
for(int j=0;j<MAX_MONTH;j++){
cout<<"\n $"<<salesmen[i].sales[j]<<" sales"<<" $"
<<salesmen[i].comms[j]<<" commission"<<endl;
}
cout<<"\n Yearly totals: $"<<salesmen[i].ytosales<<" sales,"<<" $"<<salesmen[i].ytocom<<
"commissions"<<endl;
}
cout<<"Company totals: $"<<all_sales<<" sales"<< " $ " <<all_coms<<endl;
}
艾米,我把结构声明放在了错误的地方?我应该把一些东西移到主要语句中吗?来自 Java 背景,我遇到了很多我不习惯的问题。预先感谢您的帮助。
【问题讨论】:
-
"下面的程序" -- 什么程序? (您似乎遗漏了部分问题...)
-
销售员的定义应该在任何使用它之前(你定义销售员数组之前定义
struct Salesman -
final int MAX_MONTH = 2;const 吗?