标题:初学,一维数组插入删除,请求帮助。
只看楼主
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
结帖率:100%
已结贴  问题点数:20 回复次数:8 
初学,一维数组插入删除,请求帮助。
//我想在数组上随机插入一个数并排序,然后删除其中一个数并排序,但是输入要删除的数总是出错
#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;
        }
    }

}

//


搜索更多相关主题的帖子: 删除 for 插入 int num 
2019-12-06 19:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
你告诉大家你输入了什么值,实际输出了什么数据
2019-12-06 20:27
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 2楼 rjsp
请输入插入的数字
12//这个是我输入的数据
最终排序为:
1
2
6
8
12
17
41
8//这个是我想删除的数,(我的想法是如果输出的数在数组里记录它的下标,然后把后面的数往前走一步,就和排队一样把这个数放到最后,最后再把数组长度减去一个1,结果就是1 2 6 12 17 41)我刚学C++十几天,灵活的方式我不懂,请大大在空闲的时候指导一下

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-06 20:42
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 2楼 rjsp
这个删除数组中的一个数已经困了我3天了用了3种方法都不管用,数组排序我只会冒泡排序法,大大要改变排序方法的话要解释一下

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-06 20:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 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;
    }

2019-12-06 21:00
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
还有一个错误,假如你输入的 b 在num中没找到,那么x就一直没有被赋值,当执行 for( int i=x; 时就是未定义行为了。
解决方法是将 int x; 改为 int x = 7;
2019-12-06 21:10
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 5楼 rjsp
谢谢你,大大,你这次第二次给我提出排版问题了,我根据你上次给我的排版学习了一下,除了=前后没有加空格,其他的我是按照你上次给我的编码来的,哪里没学到位吗?

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-06 21:11
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 5楼 rjsp
刚才试了一下,插入要删除的数字,还是没有出现我想要的结果,结果为空,我想就是你贴的那一段代码我写的有问题,

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-06 21:22
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 6楼 rjsp
谢谢大大,解决了解决了,排版真的很重要。。

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-06 21:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498253-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089742 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved