gpt4 book ai didi

c++ - 在数组中插入一个值

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:34 25 4
gpt4 key购买 nike

我正在尝试在位置“pos”的排序线性数组中插入一个值“item”当我使用初始化列表在数组中输入时,代码工作正常。但是当我使用 for 循环输入时,代码不起作用

#include<iostream>
using namespace std;
int main()
{
const int size = 10;
int num[size];
int num[size] = {1,2,3,4,5,6,7,8,9,10}; //a sorted linear array
int item;
int pos;
int i;

/*

for(int a=0;a<size;a++)
{
cin>>num[a];

}
*/

cout<<"Enter item"<<endl; //insert this item in array
cin>>item;
cout<<"Enter Position To Insert"<<endl;

cin>>pos;

i=size-1;
while(i>=pos)
{
num[i+1]=num[i];
i=i-1;
}
num[i+1] = item;

cout<<endl;
cout<<"array after insertion"<<endl;
for(int b=0;b<size;b++)
{

cout<<num[b]<<endl;
}


system("pause");
return 0;
}

导致问题的for循环

for(int a=0;a<size;a++)
{
cin>>num[a];

}

最佳答案

这段代码

i=size-1;
while(i>=pos)
{
num[i+1]=num[i];
i=i-1;
}
num[i+1] = item;

错了。首先,pos 可以大于或等于 size 在这种情况下,不应在数组中插入任何元素。但是根据代码片段的最后声明

num[i+1] = item;

num[size] 将分配给 item

再次在 i 的初始值等于 size - 1 的循环中尝试分配 num[size] 元素

    num[i+1]=num[i];

代码片段可以重写为例如下面的方式

if ( pos < size )
{
i = size;

while ( --i != pos ) num[i] = num[i-1];

num[i] = item;
}

关于c++ - 在数组中插入一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462419/

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