C++ 切换值的范围
因此,我将根据员工为公司工作的输入年数来确定员工的基本工资 我必须使用开关结构来完成这项工作,我得到的范围如下: 工作年限\u基本工资C++ 切换值的范围,c++,visual-studio,switch-statement,C++,Visual Studio,Switch Statement,因此,我将根据员工为公司工作的输入年数来确定员工的基本工资 我必须使用开关结构来完成这项工作,我得到的范围如下: 工作年限\u基本工资 0 – 5 $ 9,500 6 – 11 $12,700 12 – 17 $15,300 18 – 29 $22,600 >= 30 $26,800 所以,如果我不想为所有数字设
0 – 5 $ 9,500
6 – 11 $12,700
12 – 17 $15,300
18 – 29 $22,600
>= 30 $26,800
所以,如果我不想为所有数字设置正确的大小写,我该如何为大小写设置范围
这并不是太麻烦,但是我必须根据销售来计算佣金,它的范围像$3399 99和$16000—23099。
< P>如果你被迫使用<代码>开关< /Comp>语句,那么考虑多个案例可以链接在一起的事实:
switch (years) {
case 0:
case 1:
case 2:
..
return 9500;
case 6:
case 7:
..
}
但是if
语句似乎更适合这个问题:
if (years >= 0 && years <= 5)
..
else if (years >= 6 && years <= 11)
..
<代码>(年>=0和年份=6和年份>P>如果您被迫使用<代码>开关< /C>语句,则考虑多个情况可以链接在一起的事实:
switch (years) {
case 0:
case 1:
case 2:
..
return 9500;
case 6:
case 7:
..
}
但是if
语句似乎更适合这个问题:
if (years >= 0 && years <= 5)
..
else if (years >= 6 && years <= 11)
..
<代码>(年>=0和年份=6和年份>P>如果您被迫使用<代码>开关< /C>语句,则考虑多个情况可以链接在一起的事实:
switch (years) {
case 0:
case 1:
case 2:
..
return 9500;
case 6:
case 7:
..
}
但是if
语句似乎更适合这个问题:
if (years >= 0 && years <= 5)
..
else if (years >= 6 && years <= 11)
..
<代码>(年>=0和年份=6和年份>P>如果您被迫使用<代码>开关< /C>语句,则考虑多个情况可以链接在一起的事实:
switch (years) {
case 0:
case 1:
case 2:
..
return 9500;
case 6:
case 7:
..
}
但是if
语句似乎更适合这个问题:
if (years >= 0 && years <= 5)
..
else if (years >= 6 && years <= 11)
..
如果(年>=0&&years=6&&years那么对于第一部分,您只需要声明一个开关,其中多个案例遵循一个代码路径。如下所示:
int baseSalary
switch (yearsWorked)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
baseSalary = 9500;
break;
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
baseSalary = 12700;
break;
... etc ...
}
对于第二部分,对于数千范围内的每一个数字进行切换是非常不可行的,但是通过一点智能除法,它可以变得同样简单。如果将2000除以1000,则得到2,如果将2500除以1000,则也得到2(剩余500)。使用此方法,您可以生成一个switch语句:
int sales = 2100;
int salesRange = sales / 1000; // (salesRange = 2)
int commission
switch (salesRange)
{
case 0: // $0-999 sales
case 1: // $1000-1999 sales
case 2: // $2000-2999 sales
case 3: // $3000-3999 sales
commission = <some number here>;
break;
... etc ...
}
int sales=2100;
int salesRange=sales/1000;//(salesRange=2)
国际贸易委员会
开关(销售范围)
{
案例0://0-999美元销售额
案例1://1000-1999年销售额
案例2:2000-2999美元销售额
案例3://3000-3999美元销售额
佣金=;
打破
等
}
也就是说,这假设“必须使用开关”是学校作业或类似作业的一部分。正如其他人所提到的,最好使用带有范围的if语句(例如,if(sales>=0&&sales),因此对于第一部分,您只需要声明一个开关,其中多个案例遵循一个代码路径。如下所示:
int baseSalary
switch (yearsWorked)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
baseSalary = 9500;
break;
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
baseSalary = 12700;
break;
... etc ...
}
对于第二部分,对于数千范围内的每一个数字进行切换是非常不可行的,但是通过一点智能除法,它可以变得同样简单。如果将2000除以1000,则得到2,如果将2500除以1000,则也得到2(剩余500)。使用此方法,您可以生成一个switch语句:
int sales = 2100;
int salesRange = sales / 1000; // (salesRange = 2)
int commission
switch (salesRange)
{
case 0: // $0-999 sales
case 1: // $1000-1999 sales
case 2: // $2000-2999 sales
case 3: // $3000-3999 sales
commission = <some number here>;
break;
... etc ...
}
int sales=2100;
int salesRange=sales/1000;//(salesRange=2)
国际贸易委员会
开关(销售范围)
{
案例0://0-999美元销售额
案例1://1000-1999年销售额
案例2:2000-2999美元销售额
案例3://3000-3999美元销售额
佣金=;
打破
等
}
也就是说,这假设“必须使用开关”是学校作业或类似作业的一部分。正如其他人所提到的,最好使用带有范围的if语句(例如,if(sales>=0&&sales),因此对于第一部分,您只需要声明一个开关,其中多个案例遵循一个代码路径。如下所示:
int baseSalary
switch (yearsWorked)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
baseSalary = 9500;
break;
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
baseSalary = 12700;
break;
... etc ...
}
对于第二部分,对于数千范围内的每一个数字进行切换是非常不可行的,但是通过一点智能除法,它可以变得同样简单。如果将2000除以1000,则得到2,如果将2500除以1000,则也得到2(剩余500)。使用此方法,您可以生成一个switch语句:
int sales = 2100;
int salesRange = sales / 1000; // (salesRange = 2)
int commission
switch (salesRange)
{
case 0: // $0-999 sales
case 1: // $1000-1999 sales
case 2: // $2000-2999 sales
case 3: // $3000-3999 sales
commission = <some number here>;
break;
... etc ...
}
int sales=2100;
int salesRange=sales/1000;//(salesRange=2)
国际贸易委员会
开关(销售范围)
{
案例0://0-999美元销售额
案例1://1000-1999年销售额
案例2:2000-2999美元销售额
案例3://3000-3999美元销售额
佣金=;
打破
等
}
也就是说,这假设“必须使用开关”是学校作业或类似作业的一部分。正如其他人所提到的,最好使用带有范围的if语句(例如,if(sales>=0&&sales),因此对于第一部分,您只需要声明一个开关,其中多个案例遵循一个代码路径。如下所示:
int baseSalary
switch (yearsWorked)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
baseSalary = 9500;
break;
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
baseSalary = 12700;
break;
... etc ...
}
对于第二部分,对于数千范围内的每一个数字进行切换是非常不可行的,但是通过一点智能除法,它可以变得同样简单。如果将2000除以1000,则得到2,如果将2500除以1000,则也得到2(剩余500)。使用此方法,您可以生成一个switch语句:
int sales = 2100;
int salesRange = sales / 1000; // (salesRange = 2)
int commission
switch (salesRange)
{
case 0: // $0-999 sales
case 1: // $1000-1999 sales
case 2: // $2000-2999 sales
case 3: // $3000-3999 sales
commission = <some number here>;
break;
... etc ...
}
int sales=2100;
int salesRange=sales/1000;//(salesRange=2)
国际贸易委员会
开关(销售范围)
{
案例0://0-999美元销售额
案例1://1000-1999年销售额
案例2:2000-2999美元销售额
案例3://3000-3999美元销售额
佣金=;
打破
等
}
这就是说,这假设“必须使用开关”是学校作业或类似作业的一部分。正如其他人所提到的,如果需要动态创建范围而不需要硬编码,则最好使用带有范围的if语句(例如,if(sales>=0&&sales),
您可以使用此代码段
struct BaseSalary
{
int requiredExperience; // years in company
int amount; // salary amount
};
struct SortCondition
{
bool operator()(const BaseSalary& lhs, const BaseSalary& rhs)
{
return lhs.requiredExperience < rhs.requiredExperience;
}
};
struct SearchCondition
{
bool operator() (const BaseSalary& s, int exp)
{
return s.requiredExperience < exp;
}
};
// Fill base salary list in any appropriate way
BaseSalary s1;
s1.requiredExperience = 3; // [0 - 3]
s1.amount = 3500;
BaseSalary s2; // (3 - 7]
s2.requiredExperience = 7;
s2.amount = 7000;
BaseSalary s3; // (7-10]
s3.requiredExperience = 10;
s3.amount = 11000;
std::vector<BaseSalary> salaries;
salaries.push_back(s2);
salaries.push_back(s3);
salaries.push_back(s1);
// Sort salaries in ascending order of experience
std::sort(salaries.begin(), salaries.end(), SortCondition());
// Get base salary based on experience
int exp_to_search = 5;
std::vector<BaseSalary>::iterator it = std::lower_bound(salaries.begin(), salaries.end(), some_exp, SearchCondition());
if(it == salaries.end())
{
// > 10 years
}
else
{
int amount = it->amount;
}
struct基本工资
{
int要求经验;//在公司工作年限
int amount;//工资金额
};
结构排序条件
{
布尔运算符()(常量基本薪资和lhs、常量基本薪资和rhs)
{
返回lhs.requiredExperience