Output Sorting Error Using Pointer Notation[Beginners Question]
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4

Thread: Output Sorting Error Using Pointer Notation[Beginners Question]

  1. #1
    Join Date
    Jul 2012
    Location
    Kathmandu
    Posts
    31

    Output Sorting Error Using Pointer Notation[Beginners Question]

    Greeting Again Codeguru World!

    My code compiled well(After long Messing up with my head).
    But, i still not satisfied of my output as i expected.
    My code ought to sort the object of person comparing their salary. But, its not.

    My code
    Code:
    #include <iostream>
    #include <string>
    using namespace std;
    
    class person
    {
        protected :
            string name;
            float salary;
        public :
            void setdata()
                {cout <<"\nEnter Name : "; cin >> name;}
            void printdata()
                {
                    cout <<"\nName : " << name;
                    cout <<"\nSalary : " << salary;
                }
            float getsalary()
            {cout <<"\nEnter Salary : "; cin >> salary;}
            string getname()
                {return name;}
    };
    
    int main()
    
    {
        void bsort(person**, int);
        person* persptr[100];
        int n=0;
        char choice;
        do
        {
            persptr[n] = new person;
            persptr[n]->setdata();
            persptr[n]->getsalary();
            n++;
            cout <<"\nEnter Another(y/n)? "; cin >> choice;
        }while(choice=='y');
        cout<<"\nUnsorted List\n";
            for(int i=0;i<n;i++)
                persptr[i]->printdata();
        bsort(persptr, n);
        cout<<"\nSorted List\n";
            for(int i=0;i<n;i++)
                persptr[i]->printdata();
        cout << endl;
        return 0;
    }
    
    void bsort(person** c1, int n)
    {
        void order(person**, person**);
        int i,j;
        for(i=0;i<n-1;i++)
            for(j=1;j<i;j++)
                order(c1+i,c1+j);
    }
    
    void order(person** p1, person** p2)
    {
        if((*p1)->getsalary()>(*p2)->getsalary())
        {
            person* tempptr = *p1;
            *p1 = *p2;
            *p2 = tempptr;
        }
    }
    It doesn't sort the object of class person rather than it prints out the stored value as it is.
    Thank you.

    Regards
    Basanta
    Last edited by basanta; August 6th, 2012 at 05:09 AM.

  2. #2
    Join Date
    Oct 2002
    Location
    Austria
    Posts
    1,284

    Re: Output Sorting Error Using Pointer Notation[Beginners Question]

    person::getsalary() doesn't return anything ( it should if I look at the declaration ) and it seems to be implemented as pure input function.
    Kurt

  3. #3
    Join Date
    Jul 2012
    Location
    Kathmandu
    Posts
    31

    Re: Output Sorting Error Using Pointer Notation[Beginners Question]

    Quote Originally Posted by ZuK View Post
    person::getsalary() doesn't return anything ( it should if I look at the declaration ) and it seems to be implemented as pure input function.
    Kurt
    Thanks for the suggestion, I actually didn't returned float value.
    I modified my class Person

    Modified Code
    Code:
    class person
    {
        protected :
            string name;
            float salary;
        public :
            void setdata()
                {cout <<"\nEnter Name : "; cin >> name;
                cout <<"\nEnter Salary : "; cin >> salary;}
            void printdata()
                {
                    cout <<"\nName : " << name;
                    cout <<"\nSalary : " << salary;
                }
            float getsalary()
            {return salary;}
            string getname()
                {return name;}
    };
    But, Still, The pointer of object of person are not sorted according to their salary. I found somehow changes in output than before but still can't fullfill the expectation.

    Awaiting Suggestion..
    Regards
    Basanta

  4. #4
    Join Date
    Aug 2000
    Location
    New York, NY, USA
    Posts
    5,526

    Re: Output Sorting Error Using Pointer Notation[Beginners Question]

    This implementation of bubble sort looks wrong:
    Code:
    for(i=0;i<n-1;i++)
        for(j=1;j<i;j++)
            order(c1+i,c1+j);
    Vlad - MS MVP [2007 - 2012] - www.FeinSoftware.com
    Convenience and productivity tools for Microsoft Visual Studio:
    FeinViewer - an integrated GDI objects viewer for Visual C++ Debugger, and more...

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Azure Activities Information Page

Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center