Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Numbers in Ascending Order in C++

  1. Apr 28, 2008 #1
    i have to write such a program that takes 10 integers from user and show them in ascending order.

    My attempt was ---

    #include<iostream.h>
    #include<conio.h>

    int main()
    {
    int a[10];

    for(int i=0; i<10; i++) //this loop is used for getting the 10 integers from user
    cin>>a;

    ...................... // here I'm stuck. I couldn't find how should i sort them. I can sort
    // number using 'if..else if' statement which makes the program lengthy
    // for this propblem.

    getch();
    return 0;
    }


    So plz help me if any one knows how to sort 10 integers so that it doesn't make the codes lengthy.
    thanks in advance
     
  2. jcsd
  3. Apr 28, 2008 #2
    Why not just use qsort? Or are you required to actually write the low-level sorting algorithm directly? If so, I'd look at the Wikipedia pages on qsort and heapsort for some ideas; they have pretty good explanations and psuedocode.
     
  4. Apr 28, 2008 #3

    Integral

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    A bubble sort is quick and easy to code. Simple go through your list swaping adjacent numbers if they are out of order. Repeat until there are no swaps.
     
  5. Apr 28, 2008 #4

    jim mcnamara

    User Avatar
    Science Advisor
    Gold Member

    If you are allowed to use the stl and the vector container, try sort().
     
  6. Apr 28, 2008 #5
    thanks to all replied...Actually I'm newbie in c++. I haven't studied qsort, heapsort or vector container..
    swapping technique is suitable for my level...I used it in the for loop

    for(int p=0; p<9; p++)
    {
    for(int i=0; i<9; i++)
    {
    if(a>a[i+1]) // comparison between two adjacent array elements
    {
    holder=a; // holder holds the value temporarily
    a=a[i+1];
    a[i+1]=holder;
    }
    }
    }
     
  7. Apr 28, 2008 #6

    mgb_phys

    User Avatar
    Science Advisor
    Homework Helper

    Depends what sort of class this is !
    If you are supposed to write the sort then bubble sort is easiest - justify your choice over a qsort by saying that the speed difference is small for only 10numbers !
    If this is a real programming class then use.

    vector<int>a;
    for( ....
    a.push_back( input )
    }

    sort(a.begin(),a.end());
     
  8. Aug 13, 2011 #7
    obviously it vl not show the output coz nobody written cout<<a;
    line anywhere
    i tried to write it at d end of all for loops bt it shows address of a integer
     
  9. Aug 13, 2011 #8

    rcgldr

    User Avatar
    Homework Helper

    You'd need a loop and use cout<<a; .
     
  10. Aug 13, 2011 #9
    mdnazmulh, do not use the header iostream.h. It is deprecated, and not part of standard C++.

    Please use the following instead.

    Code (Text):
    #include <iostream>
    And unless you want to prefix standard library names with "std::" use the following.

    Code (Text):
    using namespace std;
    std::sort would work with arrays/pointers too.
     
  11. Jun 22, 2012 #10
    Code (Text):
    #include <iostream.h>
    void main()
    {
    const int max=50; //sets the maximum size of the array
    int num[max]; //the array can be initialized from here num={2,3,6,4,3,7,8,,4.....n};
    int holder;
    //if array is initialized then no need for this for loop
      for(int m=0; m<max; m++)
      {
      cout<<"Enter number "<<(m+1)<<" : ";
      cin>>num[m];
      }


      for(int p=0; p<(max-1); p++)
        {
         for(int i=0; i<(max-1); i++)
         {
            if(num[i]>num[i+1]) // comparison between two adjacent array elements
            {
             holder=num[i]; // holder holds the value temporarily
             num[i]=num[i+1];
             num[i+1]=holder;
            }
         }
      }
      //now to print the sorted array
      for(int j=0; j<max; j++)
      {
      cout<<" "<<num[j];        //This prints the array out in ascending order on the same line
                           //<<endl; could be placed at the end to print on different line
      }
    }
     
     
    Last edited by a moderator: Jun 23, 2012
  12. Jul 17, 2012 #11
    #include <iostream.h>
    #include<conio.h>


    void main ( )
    {
    int arr[100] , size , hold ;
    START :
    cout << "\n Enter the size of the array ( not more than 100 ) : " ;
    cin >> size ;
    if ( size > 100 )
    {
    cout << "\n Size is more than 100 ... Please re enter .. " ;
    getch ( ) ;
    clrscr ( ) ;
    goto START ;
    }
    cout << "\n Enter " << size << "elements ... \n" ;
    for ( int i = 0 ; i < size ; i ++ )
    cin >> arr;
    for ( i = 0 ; i < (size-1) ; i++ )
    {
    for ( int j = i+1 ; j < size ; j++ )
    {
    if ( arr[j] < arr )
    {
    hold = arr[j] ;
    arr[j] = arr ;
    arr = hold;
    }
    }
    }
    cout << "\n The sorted array : \n ";
    for ( i=0 ; i < size ; i++ )
    cout << arr[size] << " ";
    getch ( ) ;
    }
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Numbers in Ascending Order in C++
  1. C++ random numbers! (Replies: 3)

  2. Prime number code, C++ (Replies: 16)

  3. C++ power of n number (Replies: 13)

Loading...