我正在尝试通过网站进行初学者练习。
“需要:变量,数据类型和数值运算符基本的输入/输出逻辑(if语句,switch语句)循环(for,while,do-while)数组
编写一个程序,要求用户输入10个不同的人(人1,人2,...,人10)早餐吃的煎饼的数量。一旦输入了数据,该程序必须分析数据并输出哪个人早餐吃了最多的煎饼。”
我不确定如何让该程序召唤输入吃得最多的煎饼的人?当然,这需要使用键和值来完成,但是需求要求使用“数组”而不是“映射”?
下面是我想出的代码,但这仅输出所吃煎饼的最大数量,因此无法真正回答问题!
非常感谢您的帮助!
*在我不知道该怎么做之前,我只用了5个人来加快该过程*
#include <iostream>
using namespace std;
int main()
{
cout << "how many pancakes did you eat for breakfast?" << endl;
int person1, person2, person3, person4, person5;
cout << "Person 1: ";
cin >> person1;
cout << "Person 2: ";
cin >> person2;
cout << "Person 3: ";
cin >> person3;
cout << "Person 4: ";
cin >> person4;
cout << "Person 5: ";
cin >> person5;
int array[5] = {person1, person2, person3, person4, person5};
int temp = 0;
for (int i = 0; i<5; i++)
{
if (array[i] > temp)
{
temp = array[i];
}
}
cout << "The most pancakes eaten was " << temp << "by " << endl;
}
当然,这需要通过键和值来完成
这不是唯一的方法。另一种方法是使用没有键的索引集合,并假设位置k
对应于k
可以仅从位置计算出的键。例如,如果您有一个十个项目的数组,分别对应十个编号为1到10的人,那么一个人编号的数据k
可以存储在array中的position处k-1
。在这种情况下,不需要任何键。
这个冗长的解释意味着,如果您i
除了存储best之外还存储了best ,则tmp
在循环之后您将得到答案:
int temp = 0;
int res = -1;
for (int i = 0; i<5; i++) {
if (array[i] > temp) {
temp = array[i];
res = i;
}
}
cout << "The most pancakes eaten was " << temp << "by " << (res+1) << endl;
请注意,res+1
已打印,而不是res
。这是因为数组是从零开始的,而计数是从一开始的。
可以使用将初始元素作为当前最佳元素并从以下位置开始迭代的惯用语来进一步缩短此时间1
:
int res = 0;
for (int i = 1 ; i<5 ; i++) {
if (array[i] > array[res]) {
res = i;
}
}
cout << "The most pancakes eaten was " << array[res] << "by " << (res+1) << endl;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句