【问题标题】:Inserting a value in array在数组中插入一个值
【发布时间】:2016-05-29 11:52:25
【问题描述】:

我正在尝试在“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];

}

【问题讨论】:

  • 你不能。只需使用std::vector
  • 我知道!谢谢 !但这是一个家庭作业问题..我让它工作但它不起作用..想知道问题出在哪里
  • 如果您有一个包含 10 个项目的数组,并且您需要插入 1,那么您已经使用您拥有的代码溢出了数组(分配给 num[size])(您需要删除数组中的最后一项)。
  • 不要使用std::endl,除非你需要它的额外功能。 '\n' 结束一行。
  • “但是,当我使用 for 循环进行输入时,代码不起作用”。你的意思是它不起作用?它不编译?它给出了错误的结果? “导致问题的 for 循环”:它有什么问题?你期待什么,你会得到什么?请更准确。 究竟是什么问题?

标签: c++ arrays c++11 insertion


【解决方案1】:

这段代码sn-p

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

错了。首先pos 可以大于或等于size 在这种情况下,不应在数组中插入任何元素。但是根据代码sn-p的最后一条语句

num[i+1] = item;

num[size] 将被分配给item

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

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

代码sn-p可以改写例如下面的方式

if ( pos < size )
{
    i = size;

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

    num[i] = item;
}

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 2019-04-14
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多