忽略数组中的第一个和最后一个数字

丹特超

我有一个学科编程,我的学校老师教得不好。他给了我们一个任务,其中程序应该根据用户输入忽略数组的第一个和最后一个元素。我的代码在第一次尝试时有效,但如果我再次开始运行程序,它会打印出最后一个数字。我知道我的时间变量和第二个 for 循环的条件是叠印的根本原因,有什么办法可以修复它或对我的代码进行一些修改。谢谢你的帮助。

如果用户输入最大大小为 3 的数字 3,程序应输出:4 5

如果我再次运行程序并输入相同的值,程序将打印:4 5 4 5 6 这是错误的..

#include<iostream>
using namespace std;


int main () 
{
        int Max[100],num,Values[100];
        int rear=0,total,input=0;  
        char choice; 

    do {

    system("cls"); 
    cout<<"\n Enter the number : ";
    cin>>num; 

    cout<<"\n Enter the Max Size: ";
    cin>>Max[rear]; 

    total = Max[rear] - 2; 

    for(int i = 0; i<rear; i++)
    {      
        total += Max[rear];
    }

        for(int i=input; i<=total; i++) 
            {
                Values[i]= ++num; 
                input++; 
            }

        cout<<"\n\n Output: "; 
        for(int i=0; i<=total; i++) 
        {

            cout<<" "<<Values[i]; 
        }

    rear++;                   
    cout<<"\n\n Run the Program Again  Y/N ? ";
    cin>>choice; 

    }while (choice=='Y' || choice=='y'); 


return 0; 
}
布兰登

这里有两件事在起作用,它们似乎都是您的第一个 for 循环的结果。

for(int i = 0; i<rear; i++)
{      
    total += Max[rear];
}

首先要注意的是,只有在当前循环中分配的 'Max[rear]' 的值是复合的。如果每个条目的长度相同,这可以正常工作,但如果每个条目不同,则效果不佳。所以这..

   total += Max[rear];

变成这个..

   total += Max[i];

伟大的!但是似乎仍然发生了叠印问题?

这个问题只是一个off-by-one 错误,因为你的 for 循环倾向于使用 <= 和非零起点;这没有什么错,但它可能会出现难以捕捉的错误!

当您开始在第一个 for 循环中将“Max”数组中的条目复合到“total”变量上时,它们会将变量增加一个比他们需要的多;所以简单地改变我们之前讨论过的同一行...

    total += Max[i];

至..

    total += Max[i] - 1;

删除该偏移量,似乎很好地解决了您的叠印问题。

输入数字:3

输入最大尺寸:3

输出:4 5 4 5

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python数组中None之间的第一个和最后一个数字

如何返回带有第一个和最后一个数字的数组?

为什么我的代码只比较数组的第一个和最后一个数字 - Java

TSQL - 范围内的第一个和最后一个数字

验证数组中的第一个或最后一个项目是否等于某个数字的函数

查找升序列表中降序的第一个和最后一个数字

我的程序不会打印数组中第一个和最后一个数字的和

jQuery删除除第一个和最后一个数字外的所有数字

删除数组中的第一个和最后一个元素

从解析的数组中获取第一个和最后一个日期

在Fortran数组中查找第一个和最后一个正值

NumPy数组中的第一个和最后一个元素

返回数组中的第一个和最后一个值

查找长度为n且以d开头的第一个和最后一个数字?

查找数组中的第一个、最后一个和中间值。返回最大的一个

根据数字数组的第一个和最后一个值对数组进行排序

将步骤数限制为第一个和最后一个数组元素

当第一个数字表示最后一个索引时如何找到数组中的最大差异

正则表达式匹配输出文件中的最后一个和第一个数字

正则表达式提取字符串中的第一个和最后一个数字

如何找到一个数组在另一个数组中的出现?和第一个数组的返回索引

获取可变深度数组中的第一个数字数组

我有一个 DataFrame,其中包含一些间隔的第一个和最后一个数字。我怎样才能得到每个数字在每个间隔中的次数?

返回/打印第一个数字超过20,最后一个数字超过20

找到一个数组的第一个和最后一个索引,其元素从和到的顺序总和最大

计算第一个和最后一个出现的数字之间的NA

PowerShell 中的 Switch 语句和复制粘贴采用最后一个数组输出,而不是第一个示例

选择数组中N个均匀间隔的元素,包括第一个和最后一个

如何从数组中获取最多 3 个第一个和最后一个项目