Список студентов рассортировать в алфавитном порядке по двум первым буквам фамилии - 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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы