Список студентов рассортировать в алфавитном порядке по двум первым буквам фамилии - C (СИ)
Формулировка задачи:
Здравствуйте все))) помогите решить 'одну задачку))
Список студентов (фамилия, имя, отчество) рассортировать в алфавитном порядке сначала по двум первым буквам фамилии, затем, если первые две буквы фамилии одинаковы, по возрастанию количества букв в фамилии.
сортировка по первым 2 буквам мне удалась, а вот по количеству букв в фамилии..нет.
Ума не приложу, как дальше делать....
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <iostream.h>
#include <conio.h>
#define SIZE 81
#define LIM 20
#define HALT ""
void main (void);
void str_sort(char *[] ,int);
char* Rus(const char* text);
void main(void)
{
static char input [LIM][SIZE];
char *ptstr[LIM];
int ct=0;
int k,i=0,words=0;
printf(Rus("Введите не менее 10 строк.\n"));
printf(Rus("Для прекращения ввода нажмите ENTER в начале строки.\n"));
while (gets(input[ct])!=NULL && ct<LIM)
{
if(strcmp(input[ct],HALT)==0)
{
if(ct<10)
{
printf(Rus("Введите не менее 10 строк(введено %d)\n"), ct);
continue;
}
break;
}
ct++;
ptstr[ct-1]=input[ct-1];
}
str_sort(ptstr,ct);
puts(Rus("\nОтсортированный список строк:\n"));
for (k=0;k<ct;k++)
{
puts(ptstr[k]);
}
getch ();
}
void str_sort(char *string[],int num) //функция сортирует по превым двум буквам
{
char *temp;
int i,j, k=2;
for(i=0;i<num-1,;i++)
for(j=i+1;j<num,;j++)
if(strncmp(string[i],string[j], k)>0)
{
temp=string[i];
string[i]=string[j];
string[j]=temp;
}
}
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text,bufRus);
return bufRus;
}Решение задачи: «Список студентов рассортировать в алфавитном порядке по двум первым буквам фамилии»
textual
Листинг программы
for (j = i+1; j < num; j++)
if (strncmp(string[i], string[j], k) > 0
|| strlen(string[i]) > strlen(string[j])) {
temp = string[i];
string[i] = string[j];
string[j] = temp;
}