• C

How to sort names alphabetically in C

Hello, I'm a freshman programming student and I need a VERY FAST solution to a finals project our professor gave us. We need to write the code for a C program that:
1)Will ask the user to input names or words (perhaps 10 names)
2)Will show a menu asking the user if he/she wants the names to be arranged in ascending or descending alphabetical order
3)Will output the names in the order specified by the user in one column
I know this sounds dumb to experts like you people, but please help me.
I'm pulling my hair out just thinking about the solution.
THANKS VERY MUCH IN ADVANCE!!!!!
mamoru120997Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
hbadrConnect With a Mentor Commented:
//Here is the code mamoru :

#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <String.h>

void main()
{
 char **Ptr;
 int i,j;
 int size,sort;
 char swap[20];

 printf("How Much words do You Want To Sort: ");
 scanf("%d" ,&size );

 printf("\nChoose:");
 printf("\n1 - Assending");
 printf("\n2 - Dessending");

 sort=3;
 while( sort!=1 && sort!=2 ){
 printf("\nEnter Choice : ");
 scanf("%d", &sort);
 }

 Ptr = calloc( size , sizeof( char * ) );  // Dynamically allocate String
                                           // pointers
 for( i=0 ; i<size ; i++ ){
     Ptr[i] = calloc( 20 ,sizeof( char ) ); // Allocate 20 bytes for each
 }                                         // string

 for( i=0 ; i<size ; i++ ){                    // scan strings
     printf("\nEnter Word No. %d : " ,i+1 );
     scanf("%s", Ptr[i] );
 }

 if ( sort==1  ){
     for( j=0 ; j<size ; j++ ){       // sort assending
       for( i=j+1 ; i<size ; i++ ){
           if( Ptr[j][0] > Ptr[i][0] ){
               strcpy( swap,Ptr[i] );
               strcpy( Ptr[i] , Ptr[j] );
               strcpy( Ptr[j] , swap );
             }
         }
     }
 }
 if ( sort==2  ){
     for( j=size-1 ; j>=0 ; j-- ){     //sort dessending
         for( i=j-1 ; i>=0 ; i-- ){
           if( Ptr[j][0] > Ptr[i][0] ){
               strcpy( swap,Ptr[i] );
               strcpy( Ptr[i] , Ptr[j] );
               strcpy( Ptr[j] , swap );
             }
         }
     }
  }

 printf("\nSorted Words");
 for(i=0;i<size;i++){
     printf("\nWord No.%d : %s",i+1,Ptr[i]);
 }


}

0
 
galkinCommented:
You ca use the fact that each letter is ASCII character, which is in turn no more that interger value. For instance a is 32, if I am not mistaken, b - 33 etc. So you can get first character in the word substruct 32 and sort numbers.  
0
 
hbadrCommented:
I have the code for you ,if you want ,by the way 32 is the ascii code for (space)
0
 
mamoru120997Author Commented:
Not very useful.
0
 
hbadrCommented:
SO why do you ask if don't need the answer ,these things take time if you may know.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.