"Pancake glutton"锻炼;如果用户输入两个或多个相等的值该怎么办

"Pancake glutton" exercise; what to do if user inputs two or more equal values

本文关键字:怎么办 两个 如果 锻炼 用户 输入 Pancake glutton      更新时间:2023-10-16

好吧,这个网站上有几个类似的问题,但由于没有人和我有相同的代码,我的问题没有得到回答。我试着自学编程,我正在做一个我在网上找到的名为"煎饼饕餮"的练习。

所以我的问题是:使用我的代码,任务的两个部分都可以完成,但前提是用户不输入两个或多个人吃了相同量的煎饼,因为程序输出的是多个人吃了最多/最少的煎饼,这并不像我希望的那样干净。我如何解决这个问题,并让我的程序为多个人吃同样数量的煎饼提供额外的选择?即使只是一个微小的变化,上面写着"x吃得最多,y吃得最少,z也吃得最少",对我来说也足够了。

以下是"煎饼饕餮"练习:"编写一个程序,要求用户输入10个不同的人(人1、人2、…、人10)早餐吃的煎饼数量一旦输入了数据,程序必须分析数据并输出谁早餐吃的煎饼最多。

★修改程序,使其同时输出哪个人早餐吃的煎饼最少。">

int main(){
cout << "Enter the number of pancakes eaten by every person." << endl;
int personNum[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i = 0;
int pN1, pN2, pN3, pN4, pN5, pN6, pN7, pN8, pN9, pN10; 
int pancakeNum[]{pN1, pN2, pN3, pN4, pN5, pN6, pN7, pN8, pN9, pN10};
for(i = 0; i <= 9; i++){
cout << "Person " << personNum[i] << ": ";
cin >> pancakeNum[i];
}
int pancakeMax = *max_element(pancakeNum, pancakeNum+10);
for(i = 0; i <= 9; i++){
if(pancakeMax == pancakeNum[i]){
cout << "Person " << personNum[i] << " ate the most 
pancakes (" << pancakeMax << ")." << endl;
} 
}
int pancakeMin = *min_element(pancakeNum, pancakeNum+10);
for(i = 0; i <= 9; i++){
if(pancakeMin == pancakeNum[i]){
cout << "Person " << personNum[i] << " ate the least 
pancakes (" << pancakeMin << ")." << endl;
}
}
return 0;
}

归根结底,这并不是一个困难的算法或编程问题,而是你希望你的输出看起来有多复杂(这是用适当级别的if-else函数完成的)。例如,下面我展示了一个相对简单的枚举解决方案来解决你的问题——然而,如果你想得到你提供的语法复杂的输出,当有多个人吃了最多/最少的食物时,你需要与if-else核实。

关于如何修改代码的示例解决方案是(尽可能多地保留代码):

int main(){
cout << "Enter the number of pancakes eaten by every person." << endl;
int personNum[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i = 0;
int pN1, pN2, pN3, pN4, pN5, pN6, pN7, pN8, pN9, pN10; 
int pancakeNum[]{pN1, pN2, pN3, pN4, pN5, pN6, pN7, pN8, pN9, pN10};
for(i = 0; i <= 9; i++){
cout << "Person " << personNum[i] << ": ";
cin >> pancakeNum[i];
}
int pancakeMax = *max_element(pancakeNum, pancakeNum+10);
cout << "The following persons ate the most amount of pancakes (" << pancakeMax << "):" << endl;
for(i = 0; i <= 9; i++){
if(pancakeMax == pancakeNum[i]){
cout << personNum[i] << endl;
} 
}
int pancakeMin = *min_element(pancakeNum, pancakeNum+10);
cout << "The following persons ate the least amount of pancakes (" << pancakeMin << "):" << endl;
for(i = 0; i <= 9; i++){
if(pancakeMin == pancakeNum[i]){
cout << personNum[i] << endl;
}
}
return 0;
}