注册 登录
编程论坛 C++教室

初学,一维数组插入删除,请求帮助。

叶纤 发布于 2019-12-06 19:29, 2000 次点击
//我想在数组上随机插入一个数并排序,然后删除其中一个数并排序,但是输入要删除的数总是出错
#include<iostream>
using namespace std;

int main()
{
    int num[7]= {1,8,2,6,41,17};
    int a;//输入的数字
    int temp;//一个变量
    cout << "请输入插入的数字" << endl;
    cin >> a;//插入数字
    num[7-1]=a;//最大的
    for(int i=0; i<7-1; ++i)
    {   for(int j=0; j<7-1; ++j)
        {   if(num[j]>num[j+1])
            {   temp=num[j];
                num[j] =num[j+1];
                num[j+1]=temp;
            }
        }
    }

    cout << "最终排序为:" <<endl;
    for(int i=0; i<7; ++i)
    {
        cout << num[i]<< endl;
    }

    int b;
    int x;
    cin >> b;
//插入要删除的数
    for(int i=0; i<7; ++i) {
        if(b==num[i])
        {
            x=i;
        }

        for(int i=x; i<7-1; ++i)
        {   num[i]=num[i+1];
        }

        for(int i=x; i<7-1; ++i)
        {
            cout << num[i]<< endl;
        }
    }

}

//


8 回复
#2
rjsp2019-12-06 20:27
你告诉大家你输入了什么值,实际输出了什么数据
#3
叶纤2019-12-06 20:42
回复 2楼 rjsp
请输入插入的数字
12//这个是我输入的数据
最终排序为:
1
2
6
8
12
17
41
8//这个是我想删除的数,(我的想法是如果输出的数在数组里记录它的下标,然后把后面的数往前走一步,就和排队一样把这个数放到最后,最后再把数组长度减去一个1,结果就是1 2 6 12 17 41)我刚学C++十几天,灵活的方式我不懂,请大大在空闲的时候指导一下
#4
叶纤2019-12-06 20:47
回复 2楼 rjsp
这个删除数组中的一个数已经困了我3天了用了3种方法都不管用,数组排序我只会冒泡排序法,大大要改变排序方法的话要解释一下
#5
rjsp2019-12-06 21:00
回复 4楼 叶纤
记住代码一定要排版,否则就是自己给自己找麻烦
    for(int i=0; i<7; ++i) {
        if(b==num[i])
        {
            x=i;
        }

        for(int i=x; i<7-1; ++i)
        {   num[i]=num[i+1];
        }

        for(int i=x; i<7-1; ++i)
        {
            cout << num[i]<< endl;
        }
    }
应当是
    for(int i=0; i<7; ++i)
    {
        if(b==num[i])
        {
            x=i;
        }
    }

    for(int i=x; i<7-1; ++i)
    {
        num[i]=num[i+1];
    }

    for(int i=0; i<7-1; ++i) // 原先 int i=x; 也要改为 int i=0;
    {
        cout << num[i]<< endl;
    }

#6
rjsp2019-12-06 21:10
还有一个错误,假如你输入的 b 在num中没找到,那么x就一直没有被赋值,当执行 for( int i=x; 时就是未定义行为了。
解决方法是将 int x; 改为 int x = 7;
#7
叶纤2019-12-06 21:11
回复 5楼 rjsp
谢谢你,大大,你这次第二次给我提出排版问题了,我根据你上次给我的排版学习了一下,除了=前后没有加空格,其他的我是按照你上次给我的编码来的,哪里没学到位吗?
#8
叶纤2019-12-06 21:22
回复 5楼 rjsp
刚才试了一下,插入要删除的数字,还是没有出现我想要的结果,结果为空,我想就是你贴的那一段代码我写的有问题,
#9
叶纤2019-12-06 21:25
回复 6楼 rjsp
谢谢大大,解决了解决了,排版真的很重要。。
1