Упорядочить буквы введенного текста по алфавиту (пузырьковая сортировка) - C (СИ)
Формулировка задачи:
Нужна программа, в которую вводишь текст и она расставляет буквы по алфавиту (обязательно с помощью пузырьковой сортировки) и выводит на экран с пробелами между группой букв.
Пример:
Ввод: Annulo cingitul tenui, plano, nusquam cohaerente, ad eclipticam inclinato.
Вывод: aaaaaaa cccc d eeeee g h iiiiiii lllll mm nnnnnnnnn oooo pp q r s ttttt uuuuu
Решение задачи: «Упорядочить буквы введенного текста по алфавиту (пузырьковая сортировка)»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define N 255
int main(void)
{
char A[N] =
"Annulo cingitul tenui plano"
" nusquam cohaerente ad eclipticam inclinato";
int i, j, c, l;
l=strlen(A);
for ( i = 0; i < l-1; i++ )
for ( j = l-2; j >= i; j-- )
if ( A[j] > A[j+1])
{
c = A[j];
A[j] = A[j+1];
A[j+1] = c;
}
for(i=0; i < l; ++i)
{
if(A[i]==' ')continue;
printf("%c", A[i]);
if(A[i]!=A[i+1])printf(" ");
}
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с консолью и строками
- Определяем максимальное количество символов в массиве, которое равно 255
- Задаем исходную строку в массиве типа char, которая содержит текст для сортировки
- Объявляем переменные i, j, c, l типа int, которые будут использоваться в цикле сортировки
- Вычисляем длину строки с помощью функции strlen и сохраняем ее в переменной l
- Используем два вложенных цикла для пузырьковой сортировки строки по алфавиту
- Если текущий символ больше следующего, меняем их местами и запоминаем индекс в переменной c
- После окончания первого цикла удаляем лишние пробелы с помощью цикла for и оператора continue
- Выводим отсортированную строку на экран с помощью функции printf
- Возвращаем 0, чтобы указать, что программа успешно завершилась