Сортировать строку по алфавиту - C (СИ)
Формулировка задачи:
всем привет,Помогите, написал программу чтобы сортировать строку по алфавиту. Как можно переделать, чтобы строка была вводимая
#include <stdio.h>
#include <stdlib.h>
void sort(char **words,int size) {
int n,m,code;
char *temp;
for(n=1; n<size; n++)
for(m=0; m<size-n; m++) {
code=strcmp(words[m],words[m+1]);
if(code>0) {
temp=words[m];
words[m]=words[m+1];
words[m+1]=temp;
}
}
for (n = 0; n < size; n++)
printf("%s ",words[n] );
}
int main() {
char *words []= {"fake","bus","atom"};
int size =sizeof(words)/sizeof(char*);
sort(words,size);
}Решение задачи: «Сортировать строку по алфавиту»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
void sort(char **words[],int size) {
int n,m,code;
char *temp;
for(n=1; n<size; n++)
for(m=0; m<size-n; m++) {
code=strcmp(words[m],words[m+1]);
if(code>0) {
temp=words[m];
words[m]=words[m+1];
words[m+1]=temp;
}
}
printf("\nОтсортированные строки:\n");
for (n = 0; n < size; n++)
printf("%s ",words[n] );
printf("\n");
}
int main() {
setlocale(LC_ALL,"Rus");
char *words[5]={NULL};
char word[5][30];
char end_of_input='y';
int i=0;
for (i=0;i<5;i++){
puts("Введите строку:");
gets(word[i]);
words[i]=&word[i];
}
//char *words []= {"fake","bus","atom"};
int size =sizeof(words)/sizeof(char*);
sort(words,size);
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с C:
для работы с выводом и вводом данных, для работы с функцией malloc и free, для работы с локалью. - Создание функции сортировки, которая принимает указатель на массив строк и размер этого массива.
- Внутри функции сортировки создаются следующие переменные: — n, m, code — для выполнения алгоритма сортировки — temp — для временного хранения значения одной из строк при их перестановке
- Используя цикл for, происходит сравнение и перестановка строк в нужном порядке
- После завершения сортировки происходит вывод отсортированного массива строк на экран
- В функции main создается массив строк words[5] и подключается ввод с клавиатуры 5 строк
- Вызывается функция сортировки sort(words, 5) для сортировки введенных строк
- Выводится отсортированный массив строк на экран
- В конце программы присутствует комментарий с примером использования функции sort, где в качестве массива строк можно передать {
fake,bus,atom}