是否有办法解决这个问题,我一直有多个条件?

  • 本文关键字:条件 问题 解决 是否 c++
  • 更新时间 :
  • 英文 :

#include <iostream>
using namespace std;
int main() {
int ages[5];
for (int i = 0; i < 5; ++i) {
cin >> ages[i];
}

int age_1 = ages[0];
int age_2 = ages[1];
int age_3 = ages[2];
int age_4 = ages[3];
int age_5 = ages[4];

if (age_1 < age_2 and age_3 and age_4 and age_5) {

float dis_1 = age_1 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}
else if (age_2 < age_1 and age_3 and age_4 and age_5) {

float dis_1 = age_2 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}
else if (age_3 < age_1 and age_2 and age_4 and age_5) {

float dis_1 = age_3 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}
else if (age_4 < age_1 and age_2 and age_3 and age_5) {

float dis_1 = age_4 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}
else if (age_5 < age_4 and age_3 and age_2 and age_1) {

float dis_1 = age_5 * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << dis_3 << endl;
}else {
cout << "50" << endl;
} 


return 0;
}

这是一个基于数组获得折扣的代码。只要最小的数字不是第一个输入的,我就会得到一个不同的答案。

样本输入:

69
48
33
25 
29

预期输出:

37.5

实际输出:

26 

您需要像这样编写if语句:

if (age_1 < age_2 and age_1 < age_3 and age_1 < age_4 and age_1 < age_5)

但是,随着数组中的值越来越多,这种方法很快变得难以管理。

你可以查看std::min_element查找数组中最小的元素

你没有正确使用'and'。这就是这种情况不起作用的原因。尝试使用如下函数获取最小元素:

#include <iostream>
using namespace std;
void displayDiscount(int age){
float dis_1 = age * 0.01;
float dis_2 = 50 * dis_1;
float dis_3 = 50 - dis_2;
cout << "Result: " << dis_3 << endl;
}
int getMin(int arr[], int n)
{
int res = arr[0];
for (int i = 1; i < n; i++)
res = min(res, arr[i]);
return res;
}
int main() { 
int ages[5];

for (int i = 0; i < 5; ++i) {
cin >> ages[i];
}

int minAge = getMin(ages, 5); // size of array
displayDiscount(minAge);

return 0;
}

最新更新