【发布时间】:2017-12-05 17:56:43
【问题描述】:
我正在 Cplusplus.com 网站上做一些练习,以改进我的编程并从我今年参加的课程中学习和重新学习一些材料,下面的问题是我正在工作的问题,特别是最后一个粗体部分。
编写一个程序,要求用户输入 10 个人(第 1 个人、第 2 个人、...、第 10 个人)早餐吃的煎饼数量 输入数据后,程序必须分析数据并输出哪个人早餐吃的煎饼最多。
修改程序,使其输出所有 10 人吃掉的煎饼的数量,例如..
第 4 个人:吃了 10 个煎饼
第 3 个人:吃了 7 个煎饼
第 8 个人:吃了 4 个煎饼
等等...
这是我目前所拥有的
#include <iostream>
using namespace std;
void getPancakesEaten(int pancakes[]);
void comparePancakesEaten(int pancakes[]);
void displayOrder(int pancakes[]);
/**********************************************************************
* Gets the amount of Pancakes eaten
***********************************************************************/
void getPancakesEaten(int pancakes[])
{
for(int i = 0; i < 10; i++)
{
cout << "Person " << i + 1 << ": ate ";
cin >> pancakes[i];
}
cout << endl;
}
/**********************************************************************
* Compares the amount of pancakes eaten with each person
***********************************************************************/
void comparePancakesEaten(int pancakes[])
{
if(pancakes[0] > pancakes[1] && pancakes[0] > pancakes[2] && pancakes[0] > pancakes[3] && pancakes[0] > pancakes[4] && pancakes[0] > pancakes[5] && pancakes[0] > pancakes[6] && pancakes[0] > pancakes[7] && pancakes[0] > pancakes[8] && pancakes[9])
{
cout << "Person 1 ate " << pancakes[0] << " pancakes" << endl;
}
else if(pancakes[1] > pancakes[0] && pancakes[1] > pancakes[2] && pancakes[1] > pancakes[3] && pancakes[1] > pancakes[4] && pancakes[1] > pancakes[5] && pancakes[1] > pancakes[6] && pancakes[1] > pancakes[7] && pancakes[1] > pancakes[8] && pancakes[1] > pancakes[9])
{
cout << "Person 2 ate " << pancakes[1] << " pancakes" << endl;
}
else if(pancakes[2] > pancakes[0] && pancakes[2] > pancakes[1] && pancakes[2] > pancakes[3] && pancakes[2] > pancakes[4] && pancakes[2] > pancakes[5] && pancakes[2] > pancakes[6] && pancakes[2] > pancakes[7] && pancakes[2] > pancakes[8] && pancakes[2] > pancakes[9])
{
cout << "Person 3 ate " << pancakes[2] << " pancakes" << endl;
}
else if(pancakes[3] > pancakes[0] && pancakes[3] > pancakes[2] && pancakes[3] > pancakes[1] && pancakes[3] > pancakes[4] && pancakes[3] > pancakes[5] && pancakes[3] > pancakes[6] && pancakes[3] > pancakes[7] && pancakes[3] > pancakes[8] && pancakes[3] > pancakes[9])
{
cout << "Person 4 ate " << pancakes[3] << " pancakes" << endl;
}
else if(pancakes[4] > pancakes[0] && pancakes[4] > pancakes[2] && pancakes[4] > pancakes[3] && pancakes[4] > pancakes[1] && pancakes[4] > pancakes[5] && pancakes[4] > pancakes[6] && pancakes[4] > pancakes[7] && pancakes[4] > pancakes[8] && pancakes[4] > pancakes[9])
{
cout << "Person 5 ate " << pancakes[4] << " pancakes" << endl;
}
else if(pancakes[5] > pancakes[0] && pancakes[5] > pancakes[2] && pancakes[5] > pancakes[3] && pancakes[5] > pancakes[4] && pancakes[5] > pancakes[1] && pancakes[5] > pancakes[6] && pancakes[5] > pancakes[7] && pancakes[5] > pancakes[8] && pancakes[5] > pancakes[9])
{
cout << "Person 6 ate " << pancakes[5] << " pancakes" << endl;
}
else if(pancakes[6] > pancakes[0] && pancakes[6] > pancakes[2] && pancakes[6] > pancakes[3] && pancakes[6] > pancakes[4] && pancakes[6] > pancakes[5] && pancakes[6] > pancakes[1] && pancakes[6] > pancakes[7] && pancakes[6] > pancakes[8] && pancakes[6] > pancakes[9])
{
cout << "Person 7 ate " << pancakes[6] << " pancakes" << endl;
}
else if(pancakes[7] > pancakes[0] && pancakes[7] > pancakes[2] && pancakes[7] > pancakes[3] && pancakes[7] > pancakes[4] && pancakes[7] > pancakes[5] && pancakes[7] > pancakes[6] && pancakes[7] > pancakes[1] && pancakes[7] > pancakes[8] && pancakes[7] > pancakes[9])
{
cout << "Person 8 ate " << pancakes[7] << " pancakes" << endl;
}
else if(pancakes[8] > pancakes[0] && pancakes[8] > pancakes[2] && pancakes[8] > pancakes[3] && pancakes[8] > pancakes[4] && pancakes[8] > pancakes[5] && pancakes[8] > pancakes[6] && pancakes[8] > pancakes[7] && pancakes[8] > pancakes[1] && pancakes[8] > pancakes[9])
{
cout << "Person 9 ate " << pancakes[8] << " pancakes" << endl;
}
else if(pancakes[9] > pancakes[0] && pancakes[9] > pancakes[2] && pancakes[9] > pancakes[3] && pancakes[9] > pancakes[4] && pancakes[9] > pancakes[5] && pancakes[9] > pancakes[6] && pancakes[9] > pancakes[7] && pancakes[9] > pancakes[8] && pancakes[9] > pancakes[1])
{
cout << "Person 10 ate " << pancakes[9] << " pancakes" << endl;
}
cout << "\n";
}
/**********************************************************************
* Displays the order in which person ate the most pancakes to the least
***********************************************************************/
void displayOrder(int pancakes[])
{
for(int i = 9; i >= 0; i--)
{
for(int j = 0; j < 9; j++)
{
if(pancakes[j] > pancakes[j + 1])
{
int temp = pancakes[j + 1];
pancakes[j + 1]= pancakes[j];
pancakes[j]=temp;
}
}
cout << "Person " << i + 1 << ": ate " << pancakes[i] << " pancake(s)" << endl;
}
}
/**********************************************************************
* Runs the Entire Program
***********************************************************************/
int main()
{
int pancakes[256];
getPancakesEaten(pancakes);
comparePancakesEaten(pancakes);
displayOrder(pancakes);
}
我遇到的问题是,当我尝试显示正确的顺序时,与煎饼数量相关的人有时会根据输入不正确。
人 1:吃了 12 第 2 个人:吃了 22 第 3 个人:吃了 3 个 第 4 人:吃了 4 个 第 5 人:吃了 5 个 第 6 人:吃了 6 个 第 7 个人:吃了 7 个 第 8 人:吃了 8 个 人 9:吃了 9 第 10 人:吃了 10 个 第 2 个人吃了 22 个煎饼 第 10 人:吃了 22 个煎饼 第 9 人:吃了 12 个煎饼 第 8 人:吃了 10 个煎饼 第 7 人:吃了 9 个煎饼 第 6 人:吃了 8 个煎饼 第 5 人:吃了 7 个煎饼 第 4 人:吃了 6 个煎饼 第 3 人:吃了 5 个煎饼 第 2 个人:吃了 4 个煎饼 第 1 人:吃了 3 个煎饼为什么我为“Person 2”输入的值没有显示在“Person 10”上?是因为我的 displayOrder 函数中的 for 循环吗?
【问题讨论】:
-
“我的代码哪里出错了?” That's what debuggers are purposed for!
-
寻求帮助调试是题外话 - 但是这可能有用ericlippert.com/2014/03/05/how-to-debug-small-programs