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

help!求先设置一个动态数组,然后再将这个数组元素排序!求大侠修改程序

wxl249424820 发布于 2012-04-14 19:41, 348 次点击
程序代码:
//用数组给数字排序
//#define  num 5
#include<iostream>
using namespace std;
void main()
{
    int i,j,k,l,num,*p;
   
    //int a[num];
    cout<<"请输入您要排序的数字个数:\n";
    cin>>num;
    p=new int [num];//动态内存分配
    int a[num];
  cout<<"请输入您要排序的数字:\n";
    for(i=0;i<num;i++)
    {cin>>a[i];}
    for(l=0;l<num-1;l++)

    {
        for(j=0;j<num-1-l;j++)
            if(a[j]>a[j+1])
        { k=a[j];
        a[j]=a[j+1];
        a[j+1]=k;
        }
        }
    cout<<"由小到大整理排序后的顺序为:\n";
    for(l=0;l<num;l++)
    {
        cout<<a[l]<<"";
    }
    cout<<"\n";
    system("pause");
   
}
之前用的不是动态数组是可以给数组里面的元素排序的。
不过我觉得事先定死元素个数,程序就很局限了。(注释掉的语句就是之前非动态数组用的)
所以就想用动态数组重写一个,不过问题来了,之前没用动态的数组a,现在用了“p=new int [num];//动态内存分配”之后就不认了。
因为没有定义a[],那么我之后的for 语句中的a[]又要怎么修改?
或者各位大侠有更好的方法。。。
求大侠不吝赐教,只要思路相同,整个程序都改完也可以。
2 回复
#2
Wikyo_hoho2012-04-14 20:05
程序代码:
#include<iostream>
using namespace std;
int main()
{
    int i,j,k,l,num,*a;
  
    //int a[num];
    cout<<"请输入您要排序的数字个数:\n";
    cin>>num;
    a=new int [num];//动态内存分配
   
//int a[num];
//____下面都没变__________
  cout<<"请输入您要排序的数字:\n";
    for(i=0;i<num;i++)
    {cin>>a[i];}
    for(l=0;l<num-1;l++)

    {
        for(j=0;j<num-1-l;j++)
            if(a[j]>a[j+1])
        { k=a[j];
        a[j]=a[j+1];
        a[j+1]=k;
        }
        }
    cout<<"由小到大整理排序后的顺序为:\n";
    for(l=0;l<num;l++)
    {
        cout<<a[l]<<"";
    }
    cout<<"\n";
    system("pause");
    return 0;
}
#3
wxl2494248202012-04-14 20:11
回复 2楼 Wikyo_hoho
高手就是高手哇。一点即通。我都不知道改 为a指针也可以。弄了我大半天。。谢谢了
1