gpt4 book ai didi

c++ - 当我需要知道最大值和谁达到最大值时使用什么容器?

转载 作者:行者123 更新时间:2023-11-30 02:36:49 25 4
gpt4 key购买 nike

我正在尝试完成网站上的初学者练习。

“要求:变量、数据类型和数值运算符基本输入/输出逻辑(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;

}

最佳答案

Surely this would need to be done with a key and value

这不是唯一的方法。另一种方法是使用没有键的索引集合,并假设位置 k 对应于可以单独从位置计算的键 k。例如,如果您有一个包含十个项目的数组,对应于编号为 1 到 10 的十个人,那么可以将编号为 k 的人的数据存储在数组中的位置 k-1。在这种情况下不需要 key 。

这个冗长的解释意味着,如果除了最好的 tmp 之外还存储最好的 i,您将在循环后得到答案:

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;

关于c++ - 当我需要知道最大值和谁达到最大值时使用什么容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com