Сортировка строк по алфавиту - C (СИ)
Формулировка задачи:
void alfavit()
{int i,j;
char m[25];
for(j=0;j<3;j++)
for(i=0;i<3-j;i++)
{ if(strcmp(mas[i].name,mas[i+1].name)>0)
{strcpy(m,mas[i].name);
strcpy(mas[i].name,mas[i+1].name);
strcpy(mas[i+1].name,m);
}
}
}Решение задачи: «Сортировка строк по алфавиту»
textual
Листинг программы
void sortname(struct_data *&uk, int &n)//struct_data - тип данных структуры, n - количество элементов структуры
{
struct_data tmp;//для временного хранения при сортировке
for(int j=0; j<n; j++)
{
for(int i=0; i<n-1; i++)
{
if(stricmp(uk[i].name, uk[i+1].name)>0)
{
tmp = uk[i];
uk[i] = uk[i+1];
uk[i+1] = tmp;
}
}
}
}
Объяснение кода листинга программы
- Код имеет в своем составе функцию sortname, которая принимает два аргумента: указатель на структуру struct_data и целое число n, обозначающее количество элементов структуры.
- Внутри функции создается временная структура данных tmp для временного хранения данных при сортировке.
- Затем происходит два вложенных цикла: внешний цикл j для прохода по всем элементам структуры, внутренний цикл i для сравнения и перестановки элементов.
- Внутренний цикл i выполняется до тех пор, пока не будет просмотрено n-1 элементов структуры.
- Внутри внутреннего цикла i происходит сравнение строк с использованием функции stricmp. Если строка uk[i].name больше uk[i+1].name, то происходит обмен элементов с использованием временной структуры tmp.
- После завершения внутренних циклов i, происходит завершение внешнего цикла j.
- Возвращаемое значение функции sortname не указано.
- При вызове функции sortname передается указатель на первый элемент структуры uk и значение n.
- В результате выполнения функции sortname, элементы структуры uk будут отсортированы по алфавиту по полю name.