sorting array in a structure

hi,
i am trying sort an array that is in a structure and be able to sort along the other records associated with the array.

here is my structure

struct Employee
{
char Name[20];
char SSN[11];
float Hours;
float Rate;
}

Employee Record; // initialize the structure
...
sort(Record) // call the sorting function
...
Employee sort(Record SO) //i am using selection sort
{
int startscan, minindex, minivalue;
for(startscan = 0; startscan < (size-1); startscan++)
{
minidex = startscan;
minivalue = ??? how do I assign to the array/structure???

i want to sort by the names and when they are sorted to be able to change all other values, so that when i display the sorted arrays, i see the info in sorted order with their respective variables i.e. hours, rate, ssn...

please help
Isa
mafrenzAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

brettmjohnsonCommented:
You will need a container (such as an array or linked list) to hold all the structures.
The container provides some sort of relationship between the structures that can
be used to impose order (offset into array, position in list, etc).  Once you have a
container in which items can be ordered, your sort routine simply needs to permute
the order (swap elements in array, etc).

0
dhyaneshCommented:
hi

First you should declare Record as an array of Employee records i.e.

Employee Record[50]                 //i.e. if you have 50 employees

void sort(Employee *SO)         //Here you will be passing pointer to entire array of records which are of type Employee

Since you want to sort by name

strcmp() would be best function to compare two strings.

Also minivalue would be a char array and not int.

char minivalue[20]

then to store in minivalue

strcpy(minivalue,SO[startscan].Name);     //copies name at position startscan to minivalue

Also you have to be careful of

char Name[20]
char SSN[11]

The user can easily enter more characters and it will result in unexpected errors.

Dhyanesh
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
dhyaneshCommented:
hi

In my code i stated a max of 50 employees. However if this is to be dynamic then link list would be best option

Dhyanesh
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C++

From novice to tech pro — start learning today.