“煎饼cake肉”练习;用户输入两个或多个相等值时该怎么办

时间:2019-02-11 14:00:36

标签: c++

好的,这个站点上有几个类似我的问题,但是由于没有人拥有与我相同的代码,所以我的问题没有得到回答。 我正在尝试自学编程,并且正在从事网上找到的“ Pancake glut嘴”这项练习。

所以这是我的问题:使用我的代码,可以完成任务的两个部分,但前提是用户没有输入两个或两个以上的人吃了相同数量的煎饼,因为这样程序会输出多个人吃了最多/最少的煎饼,但不如我想要的那样干净。我该如何解决这个问题,并使我的程序有一个额外的选择,供多个人吃相同量的煎饼?即使只是很小的变化,它说“人吃得最多,人吃得最少,人z也吃得最少”对我来说就足够了。

这是“煎饼cake肉”练习: “编写一个程序,要求用户输入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;
}

1 个答案:

答案 0 :(得分: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;

}