#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+CgppbnQgbWFpbigpIHsKICAgIGNoYXIgdGV4dFsyMDBdID0gItCh0LXQs9C+0LTQvdGPINGF0L7RgNC+0YjQsNGPINC/0L7Qs9C+0LTQsC4g0JfQsNCy0YLRgNCwINCx0YPQtNC10YIg0YLQsNC60LbQtSEg0J3QsNGB0YfQtdGCINCy0LXRh9C10YDQsCDRjyDQvdC1INGD0LLQtdGA0LXQvSAiOwogICAgY2hhciB3b3Jkc1syMF1bMzBdOyAvLyDQvNCw0YHRgdC40LIg0YHQu9C+0LIKICAgIGludCBpID0gMCwgaiA9IDAsIGsgPSAwLCB3b3JkX2NvdW50ID0gMDsKICAgIGNoYXIgYzsKCiAgICBwcmludGYoItCY0YHRhdC+0LTQvdGL0Lkg0YLQtdC60YHRgjogJXNcbiIsIHRleHQpOwogICAgcHJpbnRmKCJcbtCf0L7RgdC70LUg0YHQvtGA0YLQuNGA0L7QstC60Lgg0YHQu9C+0LI6XG4iKTsKCiAgICB3aGlsZSAodGV4dFtpXSAhPSAnXDAnKSB7CiAgICAgICAgd29yZF9jb3VudCA9IDA7CiAgICAgICAgayA9IDA7CgogICAgICAgIC8vINCh0L7QsdC40YDQsNC10Lwg0YHQu9C+0LLQsCDQtNC+INC60L7QvdGG0LAg0L/RgNC10LTQu9C+0LbQtdC90LjRjwogICAgICAgIHdoaWxlICh0ZXh0W2ldICE9ICdcMCcgJiYgdGV4dFtpXSAhPSAnLicgJiYgdGV4dFtpXSAhPSAnIScgJiYgdGV4dFtpXSAhPSAnPycpIHsKICAgICAgICAgICAgaWYgKHRleHRbaV0gPT0gJyAnKSB7CiAgICAgICAgICAgICAgICBpZiAoayA+IDApIHsKICAgICAgICAgICAgICAgICAgICB3b3Jkc1t3b3JkX2NvdW50XVtrXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgICAgd29yZF9jb3VudCsrOwogICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgd29yZHNbd29yZF9jb3VudF1ba10gPSB0ZXh0W2ldOwogICAgICAgICAgICAgICAgaysrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9CiAgICAgICAgLy8g0J/QvtGB0LvQtdC00L3QtdC1INGB0LvQvtCy0L4KICAgICAgICBpZiAoayA+IDApIHsKICAgICAgICAgICAgd29yZHNbd29yZF9jb3VudF1ba10gPSAnXDAnOwogICAgICAgICAgICB3b3JkX2NvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAvLyDQl9Cw0L/QvtC80LjQvdCw0LXQvCDQutC+0L3QtdGGINC/0YDQtdC00LvQvtC20LXQvdC40Y8KICAgICAgICBjID0gdGV4dFtpXTsKICAgICAgICBpZiAodGV4dFtpXSAhPSAnXDAnKSBpKys7CgogICAgICAgIC8vINCh0L7RgNGC0LjRgNGD0LXQvCDRgdC70L7QstCwICjQv9GD0LfRi9GA0YzQutC+0LwpCiAgICAgICAgZm9yIChpbnQgbSA9IDA7IG0gPCB3b3JkX2NvdW50IC0gMTsgbSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgd29yZF9jb3VudCAtIDEgLSBtOyBuKyspIHsKICAgICAgICAgICAgICAgIGludCBwID0gMDsKICAgICAgICAgICAgICAgIHdoaWxlICh3b3Jkc1tuXVtwXSAhPSAnXDAnICYmIHdvcmRzW24rMV1bcF0gIT0gJ1wwJyAmJiB3b3Jkc1tuXVtwXSA9PSB3b3Jkc1tuKzFdW3BdKSB7CiAgICAgICAgICAgICAgICAgICAgcCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHdvcmRzW25dW3BdID4gd29yZHNbbisxXVtwXSkgewogICAgICAgICAgICAgICAgICAgIC8vINCc0LXQvdGP0LXQvCDRgdC70L7QstCwINC80LXRgdGC0LDQvNC4CiAgICAgICAgICAgICAgICAgICAgY2hhciB0ZW1wWzMwXTsKICAgICAgICAgICAgICAgICAgICBpbnQgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdvcmRzW25dW3RdICE9ICdcMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFt0XSA9IHdvcmRzW25dW3RdOwogICAgICAgICAgICAgICAgICAgICAgICB0Kys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRlbXBbdF0gPSAnXDAnOwoKICAgICAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAod29yZHNbbisxXVt0XSAhPSAnXDAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRzW25dW3RdID0gd29yZHNbbisxXVt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgdCsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3b3Jkc1tuXVt0XSA9ICdcMCc7CgogICAgICAgICAgICAgICAgICAgIHQgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wW3RdICE9ICdcMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNbbisxXVt0XSA9IHRlbXBbdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHQrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd29yZHNbbisxXVt0XSA9ICdcMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vINCS0YvQstC+0LTQuNC8INC+0YLRgdC+0YDRgtC40YDQvtCy0LDQvdC90L7QtSDQv9GA0LXQtNC70L7QttC10L3QuNC1CiAgICAgICAgZm9yIChpbnQgbSA9IDA7IG0gPCB3b3JkX2NvdW50OyBtKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIlcyIsIHdvcmRzW21dKTsKICAgICAgICAgICAgaWYgKG0gPCB3b3JkX2NvdW50IC0gMSkgcHJpbnRmKCIgIik7CiAgICAgICAgfQogICAgICAgIGlmIChjICE9ICdcMCcpIHByaW50ZigiJWMgIiwgYyk7CiAgICB9CgogICAgcHJpbnRmKCJcbiIpOwogICAgcmV0dXJuIDA7Cn0KCgo=