#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+CiAKaW50IG1haW4oKSB7CiAgICBjaGFyIHRleHRbMjAwXSA9ICLQn9C+0LPQvtC00LAg0YHQs9C+0LTQvdGPINC80LXQvdGP0LXRgtGB0Y8u0KHQtdCz0L7QtNC90Y8g0LHRg9C00LXRgiDRgdC+0LvQvdC10YfQvdC+ISDQktC10YfQtdGA0L7QvCDRhdC+0LvQvtC00L3Qvj8iOwogICAgY2hhciB3b3Jkc1syMF1bMzBdOyAvLyDQvNCw0YHRgdC40LIg0YHQu9C+0LIKICAgIGludCBpID0gMCwgaiA9IDAsIGsgPSAwLCB3b3JkX2NvdW50ID0gMDsKICAgIGNoYXIgYzsKIAogICAgcHJpbnRmKCLQmNGB0YXQvtC00L3Ri9C5INGC0LXQutGB0YI6ICVzXG4iLCB0ZXh0KTsKICAgIHByaW50ZigiXG7Qn9C+0YHQu9C1INGB0L7RgNGC0LjRgNC+0LLQutC4INGB0LvQvtCyOlxuIik7CiAKICAgIHdoaWxlICh0ZXh0W2ldICE9ICdcMCcpIHsKICAgICAgICB3b3JkX2NvdW50ID0gMDsKICAgICAgICBrID0gMDsKIAogICAgICAgIC8vINCh0L7QsdC40YDQsNC10Lwg0YHQu9C+0LLQsCDQtNC+INC60L7QvdGG0LAg0L/RgNC10LTQu9C+0LbQtdC90LjRjwogICAgICAgIHdoaWxlICh0ZXh0W2ldICE9ICdcMCcgJiYgdGV4dFtpXSAhPSAnLicgJiYgdGV4dFtpXSAhPSAnIScgJiYgdGV4dFtpXSAhPSAnPycpIHsKICAgICAgICAgICAgaWYgKHRleHRbaV0gPT0gJyAnKSB7CiAgICAgICAgICAgICAgICBpZiAoayA+IDApIHsKICAgICAgICAgICAgICAgICAgICB3b3Jkc1t3b3JkX2NvdW50XVtrXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgICAgd29yZF9jb3VudCsrOwogICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgd29yZHNbd29yZF9jb3VudF1ba10gPSB0ZXh0W2ldOwogICAgICAgICAgICAgICAgaysrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9CiAgICAgICAgLy8g0J/QvtGB0LvQtdC00L3QtdC1INGB0LvQvtCy0L4KICAgICAgICBpZiAoayA+IDApIHsKICAgICAgICAgICAgd29yZHNbd29yZF9jb3VudF1ba10gPSAnXDAnOwogICAgICAgICAgICB3b3JkX2NvdW50Kys7CiAgICAgICAgfQogCiAgICAgICAgLy8g0JfQsNC/0L7QvNC40L3QsNC10Lwg0LrQvtC90LXRhiDQv9GA0LXQtNC70L7QttC10L3QuNGPCiAgICAgICAgYyA9IHRleHRbaV07CiAgICAgICAgaWYgKHRleHRbaV0gIT0gJ1wwJykgaSsrOwogCiAgICAgICAgLy8g0KHQvtGA0YLQuNGA0YPQtdC8INGB0LvQvtCy0LAgKNC/0YPQt9GL0YDRjNC60L7QvCkKICAgICAgICBmb3IgKGludCBtID0gMDsgbSA8IHdvcmRfY291bnQgLSAxOyBtKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCB3b3JkX2NvdW50IC0gMSAtIG07IG4rKykgewogICAgICAgICAgICAgICAgaW50IHAgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKHdvcmRzW25dW3BdICE9ICdcMCcgJiYgd29yZHNbbisxXVtwXSAhPSAnXDAnICYmIHdvcmRzW25dW3BdID09IHdvcmRzW24rMV1bcF0pIHsKICAgICAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAod29yZHNbbl1bcF0gPiB3b3Jkc1tuKzFdW3BdKSB7CiAgICAgICAgICAgICAgICAgICAgLy8g0JzQtdC90Y/QtdC8INGB0LvQvtCy0LAg0LzQtdGB0YLQsNC80LgKICAgICAgICAgICAgICAgICAgICBjaGFyIHRlbXBbMzBdOwogICAgICAgICAgICAgICAgICAgIGludCB0ID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAod29yZHNbbl1bdF0gIT0gJ1wwJykgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wW3RdID0gd29yZHNbbl1bdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHQrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGVtcFt0XSA9ICdcMCc7CiAKICAgICAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAod29yZHNbbisxXVt0XSAhPSAnXDAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRzW25dW3RdID0gd29yZHNbbisxXVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgdCsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3b3Jkc1tuXVt0XSA9ICdcMCc7CiAKICAgICAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGVtcFt0XSAhPSAnXDAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRzW24rMV1bdF0gPSB0ZW1wW3RdOwogICAgICAgICAgICAgICAgICAgICAgICB0Kys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdvcmRzW24rMV1bdF0gPSAnXDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogCiAgICAgICAgLy8g0JLRi9Cy0L7QtNC40Lwg0L7RgtGB0L7RgNGC0LjRgNC+0LLQsNC90L3QvtC1INC/0YDQtdC00LvQvtC20LXQvdC40LUKICAgICAgICBmb3IgKGludCBtID0gMDsgbSA8IHdvcmRfY291bnQ7IG0rKykgewogICAgICAgICAgICBwcmludGYoIiVzIiwgd29yZHNbbV0pOwogICAgICAgICAgICBpZiAobSA8IHdvcmRfY291bnQgLSAxKSBwcmludGYoIiAiKTsKICAgICAgICB9CiAgICAgICAgaWYgKGMgIT0gJ1wwJykgcHJpbnRmKCIlYyAiLCBjKTsKICAgIH0KIAogICAgcHJpbnRmKCJcbiIpOwogICAgcmV0dXJuIDA7Cn0=