在数组中插入一个值
Inserting a value in array
我正在尝试在排序的线性数组中的 "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
在这种情况下 none 元素应该被插入到数组中。但是根据代码片段的最后一个语句
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;
}
我正在尝试在排序的线性数组中的 "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
在这种情况下 none 元素应该被插入到数组中。但是根据代码片段的最后一个语句
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;
}