• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3361
  • Last Modified:

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!!!!!
0
mamoru120997
Asked:
mamoru120997
  • 3
1 Solution
 
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:
//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
 
hbadrCommented:
SO why do you ask if don't need the answer ,these things take time if you may know.
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now