首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从用户获取无穷多的输入,而不是打印最大的3,而不使用数组。

从用户获取无穷多的输入,而不是打印最大的3,而不使用数组。
EN

Stack Overflow用户
提问于 2019-12-11 10:48:33
回答 3查看 76关注 0票数 3

第一次,第一次学习编码任何东西。对不起我的无知。所以我被要求编写一个程序,从用户那里获取无限数量的数字,直到他提交我能做的非常好的数字,但我也需要打印以下三个输入的最大和,例如,用户输入4,20,2,4,11,9,8,1程序应该打印11,9,8,因为这3的和大于所有其他3。我必须告诉你我不能使用数组,我知道它是一个缓冲器,但我知道没有数组是可能的。

我试图构建一个函数,试图表现得像一个数组,但我真的不能回她的电话,因为它是一个双变量函数,其中一个是输入,这一点我显然不知道。现在正在研究这个问题5个小时了,我想我要你的智慧。

代码语言:javascript
运行
复制
cout << " enter numbers as long as you wish" << endl;
cout << "when you wish to stop enter the number 1" << endl;
int n;
int sum;
int i = 1;


while (n != 1) { 

    cin >> n;
    remember(i, n);
    if (n == 1) {
        cout << "you choosed to stop " << endl;
        break;
    }
    i++;
}

我试图构建的函数非常简单,但是我不能调用任何特定的值,例如,当我想将它们加起来,看看谁更大的时候,我不能调用任何特定的值。

代码语言:javascript
运行
复制
int remember(int i, int n){
    return n;
}

*请注意,正在测试的金额是用户按确切顺序提交的数字之和11、9、8是输出,而不是20、11、9、9。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-11 11:12:39

您需要七个变量:三个是当前正在读取的“窗口”,用它检查和;三个是“最大和”三重;一个是当前的输入。

对于读取到“当前输入”变量的每个输入,将窗口向下移动一个值,并将顶部变量设置为刚刚读取的输入。

然后在窗口中取所有三个值的和,并检查它是否大于当前“最大和”三倍的和。如果是,则使“最大和”三倍等于当前窗口值。

迭代直到没有更多的输入,然后打印“最大”值。

关于三个窗口值的移动,假设您有三个名为window1window2window3的变量,那么您可以这样移动:

代码语言:javascript
运行
复制
window1 = window2;
window2 = window3;
window3 = current;

检查总数就像检查一样容易

代码语言:javascript
运行
复制
if ((window1 + window2 + window3) > (biggest1 + biggest2 + biggest3))

所有窗口和最大变量都需要初始化到类型的最低值(对于int,即std::numeric_limits::min())。

由于您初始化了所有的值,所以没有必要为第一个和第二个输入设置特殊情况。

在输入时进行迭代可以通过以下操作完成

代码语言:javascript
运行
复制
while (std::cin >> current)
票数 2
EN

Stack Overflow用户

发布于 2019-12-11 10:53:55

首先,n是未初始化的,所以在执行while (n != 1){时它是未定义的行为。所以从技术上讲,没有人能保证任何事情都能在这个范围内发挥作用。您应该初始化它,例如将其设置为0 (或者在本例中不是1的任何其他值):

代码语言:javascript
运行
复制
int n = 0;

但是,您所观察到的问题是,您的循环中有另一个int n;,它隐藏了外部n (在while条件下签入的那个)。因此,cin >> n;只会修改内部n。外部的值将保持相同的未初始化值。因此,如果该值使其进入循环,它将永远不会退出循环,因为n != 1始终是true

删除循环中的int n;以解决问题。

票数 1
EN

Stack Overflow用户

发布于 2019-12-11 11:11:12

基本上,您需要的是4个变量来计算实际列表及其总和(3个用于列表,1个用于它的和)

您还需要3个变量来考虑实际的列表。

在每一次互动中,您有两件事要做:

  • 比较实际列表的和和存储的列表。如果实际列表的和大于存储的和,则对每个新数字实现
  • ,旋转您的变量,这些变量负责实际列表。

在伪码中:

代码语言:javascript
运行
复制
v3 = v2;
v2 = v1;
v1 = new_number;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59284103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档