#include <stdio.h>
int main( ) {
char text[ 200 ] = "Кошка любит молоко. Собака любит кость! А ты что любишь? " ;
char words[ 20 ] [ 30 ] ; // массив слов
int i = 0 , j = 0 , k = 0 , word_count = 0 ;
char c;
printf ( "Исходный текст: %s\n " , text
) ; printf ( "\n После сортировки слов:\n " ) ;
while ( text[ i] != '\0 ' ) {
word_count = 0 ;
k = 0 ;
// Собираем слова до конца предложения
while ( text[ i] != '\0 ' && text[ i] != '.' && text[ i] != '!' && text[ i] != '?' ) {
if ( text[ i] == ' ' ) {
if ( k > 0 ) {
words[ word_count] [ k] = '\0 ' ;
word_count++;
k = 0 ;
}
} else {
words[ word_count] [ k] = text[ i] ;
k++;
}
i++;
}
// Последнее слово
if ( k > 0 ) {
words[ word_count] [ k] = '\0 ' ;
word_count++;
}
// Запоминаем конец предложения
c = text[ i] ;
if ( text[ i] != '\0 ' ) i++;
// Сортируем слова (пузырьком)
for ( int m = 0 ; m < word_count - 1 ; m++ ) {
for ( int n = 0 ; n < word_count - 1 - m; n++ ) {
int p = 0 ;
while ( words[ n] [ p] != '\0 ' && words[ n+ 1 ] [ p] != '\0 ' && words[ n] [ p] == words[ n+ 1 ] [ p] ) {
p++;
}
if ( words[ n] [ p] > words[ n+ 1 ] [ p] ) {
// Меняем слова местами
char temp[ 30 ] ;
int t = 0 ;
while ( words[ n] [ t] != '\0 ' ) {
temp[ t] = words[ n] [ t] ;
t++;
}
temp[ t] = '\0 ' ;
t = 0 ;
while ( words[ n+ 1 ] [ t] != '\0 ' ) {
words[ n] [ t] = words[ n+ 1 ] [ t] ;
t++;
}
words[ n] [ t] = '\0 ' ;
t = 0 ;
while ( temp[ t] != '\0 ' ) {
words[ n+ 1 ] [ t] = temp[ t] ;
t++;
}
words[ n+ 1 ] [ t] = '\0 ' ;
}
}
}
// Выводим отсортированное предложение
for ( int m = 0 ; m < word_count; m++ ) {
if ( m
< word_count
- 1 ) printf ( " " ) ; }
if ( c
!= '\0 ' ) printf ( "%c " , c
) ; }
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKaW50IG1haW4oKSB7CiAgICBjaGFyIHRleHRbMjAwXSA9ICLQmtC+0YjQutCwINC70Y7QsdC40YIg0LzQvtC70L7QutC+LiDQodC+0LHQsNC60LAg0LvRjtCx0LjRgiDQutC+0YHRgtGMISDQkCDRgtGLINGH0YLQviDQu9GO0LHQuNGI0Yw/ICI7CiAgICBjaGFyIHdvcmRzWzIwXVszMF07IC8vINC80LDRgdGB0LjQsiDRgdC70L7QsgogICAgaW50IGkgPSAwLCBqID0gMCwgayA9IDAsIHdvcmRfY291bnQgPSAwOwogICAgY2hhciBjOwogCiAgICBwcmludGYoItCY0YHRhdC+0LTQvdGL0Lkg0YLQtdC60YHRgjogJXNcbiIsIHRleHQpOwogICAgcHJpbnRmKCJcbtCf0L7RgdC70LUg0YHQvtGA0YLQuNGA0L7QstC60Lgg0YHQu9C+0LI6XG4iKTsKIAogICAgd2hpbGUgKHRleHRbaV0gIT0gJ1wwJykgewogICAgICAgIHdvcmRfY291bnQgPSAwOwogICAgICAgIGsgPSAwOwogCiAgICAgICAgLy8g0KHQvtCx0LjRgNCw0LXQvCDRgdC70L7QstCwINC00L4g0LrQvtC90YbQsCDQv9GA0LXQtNC70L7QttC10L3QuNGPCiAgICAgICAgd2hpbGUgKHRleHRbaV0gIT0gJ1wwJyAmJiB0ZXh0W2ldICE9ICcuJyAmJiB0ZXh0W2ldICE9ICchJyAmJiB0ZXh0W2ldICE9ICc/JykgewogICAgICAgICAgICBpZiAodGV4dFtpXSA9PSAnICcpIHsKICAgICAgICAgICAgICAgIGlmIChrID4gMCkgewogICAgICAgICAgICAgICAgICAgIHdvcmRzW3dvcmRfY291bnRdW2tdID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICB3b3JkX2NvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB3b3Jkc1t3b3JkX2NvdW50XVtrXSA9IHRleHRbaV07CiAgICAgICAgICAgICAgICBrKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICAvLyDQn9C+0YHQu9C10LTQvdC10LUg0YHQu9C+0LLQvgogICAgICAgIGlmIChrID4gMCkgewogICAgICAgICAgICB3b3Jkc1t3b3JkX2NvdW50XVtrXSA9ICdcMCc7CiAgICAgICAgICAgIHdvcmRfY291bnQrKzsKICAgICAgICB9CiAKICAgICAgICAvLyDQl9Cw0L/QvtC80LjQvdCw0LXQvCDQutC+0L3QtdGGINC/0YDQtdC00LvQvtC20LXQvdC40Y8KICAgICAgICBjID0gdGV4dFtpXTsKICAgICAgICBpZiAodGV4dFtpXSAhPSAnXDAnKSBpKys7CiAKICAgICAgICAvLyDQodC+0YDRgtC40YDRg9C10Lwg0YHQu9C+0LLQsCAo0L/Rg9C30YvRgNGM0LrQvtC8KQogICAgICAgIGZvciAoaW50IG0gPSAwOyBtIDwgd29yZF9jb3VudCAtIDE7IG0rKykgewogICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IHdvcmRfY291bnQgLSAxIC0gbTsgbisrKSB7CiAgICAgICAgICAgICAgICBpbnQgcCA9IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAod29yZHNbbl1bcF0gIT0gJ1wwJyAmJiB3b3Jkc1tuKzFdW3BdICE9ICdcMCcgJiYgd29yZHNbbl1bcF0gPT0gd29yZHNbbisxXVtwXSkgewogICAgICAgICAgICAgICAgICAgIHArKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh3b3Jkc1tuXVtwXSA+IHdvcmRzW24rMV1bcF0pIHsKICAgICAgICAgICAgICAgICAgICAvLyDQnNC10L3Rj9C10Lwg0YHQu9C+0LLQsCDQvNC10YHRgtCw0LzQuAogICAgICAgICAgICAgICAgICAgIGNoYXIgdGVtcFszMF07CiAgICAgICAgICAgICAgICAgICAgaW50IHQgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICh3b3Jkc1tuXVt0XSAhPSAnXDAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBbdF0gPSB3b3Jkc1tuXVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgdCsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0ZW1wW3RdID0gJ1wwJzsKIAogICAgICAgICAgICAgICAgICAgIHQgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICh3b3Jkc1tuKzFdW3RdICE9ICdcMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNbbl1bdF0gPSB3b3Jkc1tuKzFdW3RdOwogICAgICAgICAgICAgICAgICAgICAgICB0Kys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdvcmRzW25dW3RdID0gJ1wwJzsKIAogICAgICAgICAgICAgICAgICAgIHQgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wW3RdICE9ICdcMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNbbisxXVt0XSA9IHRlbXBbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHQrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd29yZHNbbisxXVt0XSA9ICdcMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAKICAgICAgICAvLyDQktGL0LLQvtC00LjQvCDQvtGC0YHQvtGA0YLQuNGA0L7QstCw0L3QvdC+0LUg0L/RgNC10LTQu9C+0LbQtdC90LjQtQogICAgICAgIGZvciAoaW50IG0gPSAwOyBtIDwgd29yZF9jb3VudDsgbSsrKSB7CiAgICAgICAgICAgIHByaW50ZigiJXMiLCB3b3Jkc1ttXSk7CiAgICAgICAgICAgIGlmIChtIDwgd29yZF9jb3VudCAtIDEpIHByaW50ZigiICIpOwogICAgICAgIH0KICAgICAgICBpZiAoYyAhPSAnXDAnKSBwcmludGYoIiVjICIsIGMpOwogICAgfQogCiAgICBwcmludGYoIlxuIik7CiAgICByZXR1cm4gMDsKfQogCiA=