#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+0LPQvtC00LAg0YHQtdCz0L7QtNC90Y8g0LzQtdC90Y/QtdGC0YHRjy4g0LHRg9C00LXRgiDRgdC10LPQvtC00L3RjyDRgdC+0LvQvdC10YfQvdC+ISDQkdGD0LTQtdGCINC70Lgg0LLQtdGH0LXRgNC+0Lwg0YXQvtC70L7QtNC90L4/IjsKICAgIGNoYXIgd29yZHNbMjBdWzMwXTsgLy8g0LzQsNGB0YHQuNCyINGB0LvQvtCyCiAgICBpbnQgaSA9IDAsIGogPSAwLCBrID0gMCwgd29yZF9jb3VudCA9IDA7CiAgICBjaGFyIGM7CiAKICAgIHByaW50Zigi0JjRgdGF0L7QtNC90YvQuSDRgtC10LrRgdGCOiAlc1xuIiwgdGV4dCk7CiAgICBwcmludGYoIlxu0J/QvtGB0LvQtSDRgdC+0YDRgtC40YDQvtCy0LrQuCDRgdC70L7QsjpcbiIpOwogCiAgICB3aGlsZSAodGV4dFtpXSAhPSAnXDAnKSB7CiAgICAgICAgd29yZF9jb3VudCA9IDA7CiAgICAgICAgayA9IDA7CiAKICAgICAgICAvLyDQodC+0LHQuNGA0LDQtdC8INGB0LvQvtCy0LAg0LTQviDQutC+0L3RhtCwINC/0YDQtdC00LvQvtC20LXQvdC40Y8KICAgICAgICB3aGlsZSAodGV4dFtpXSAhPSAnXDAnICYmIHRleHRbaV0gIT0gJy4nICYmIHRleHRbaV0gIT0gJyEnICYmIHRleHRbaV0gIT0gJz8nKSB7CiAgICAgICAgICAgIGlmICh0ZXh0W2ldID09ICcgJykgewogICAgICAgICAgICAgICAgaWYgKGsgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgd29yZHNbd29yZF9jb3VudF1ba10gPSAnXDAnOwogICAgICAgICAgICAgICAgICAgIHdvcmRfY291bnQrKzsKICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHdvcmRzW3dvcmRfY291bnRdW2tdID0gdGV4dFtpXTsKICAgICAgICAgICAgICAgIGsrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpKys7CiAgICAgICAgfQogICAgICAgIC8vINCf0L7RgdC70LXQtNC90LXQtSDRgdC70L7QstC+CiAgICAgICAgaWYgKGsgPiAwKSB7CiAgICAgICAgICAgIHdvcmRzW3dvcmRfY291bnRdW2tdID0gJ1wwJzsKICAgICAgICAgICAgd29yZF9jb3VudCsrOwogICAgICAgIH0KIAogICAgICAgIC8vINCX0LDQv9C+0LzQuNC90LDQtdC8INC60L7QvdC10YYg0L/RgNC10LTQu9C+0LbQtdC90LjRjwogICAgICAgIGMgPSB0ZXh0W2ldOwogICAgICAgIGlmICh0ZXh0W2ldICE9ICdcMCcpIGkrKzsKIAogICAgICAgIC8vINCh0L7RgNGC0LjRgNGD0LXQvCDRgdC70L7QstCwICjQv9GD0LfRi9GA0YzQutC+0LwpCiAgICAgICAgZm9yIChpbnQgbSA9IDA7IG0gPCB3b3JkX2NvdW50IC0gMTsgbSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IG4gPSAwOyBuIDwgd29yZF9jb3VudCAtIDEgLSBtOyBuKyspIHsKICAgICAgICAgICAgICAgIGludCBwID0gMDsKICAgICAgICAgICAgICAgIHdoaWxlICh3b3Jkc1tuXVtwXSAhPSAnXDAnICYmIHdvcmRzW24rMV1bcF0gIT0gJ1wwJyAmJiB3b3Jkc1tuXVtwXSA9PSB3b3Jkc1tuKzFdW3BdKSB7CiAgICAgICAgICAgICAgICAgICAgcCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHdvcmRzW25dW3BdID4gd29yZHNbbisxXVtwXSkgewogICAgICAgICAgICAgICAgICAgIC8vINCc0LXQvdGP0LXQvCDRgdC70L7QstCwINC80LXRgdGC0LDQvNC4CiAgICAgICAgICAgICAgICAgICAgY2hhciB0ZW1wWzMwXTsKICAgICAgICAgICAgICAgICAgICBpbnQgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdvcmRzW25dW3RdICE9ICdcMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFt0XSA9IHdvcmRzW25dW3RdOwogICAgICAgICAgICAgICAgICAgICAgICB0Kys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRlbXBbdF0gPSAnXDAnOwogCiAgICAgICAgICAgICAgICAgICAgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHdvcmRzW24rMV1bdF0gIT0gJ1wwJykgewogICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc1tuXVt0XSA9IHdvcmRzW24rMV1bdF07CiAgICAgICAgICAgICAgICAgICAgICAgIHQrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd29yZHNbbl1bdF0gPSAnXDAnOwogCiAgICAgICAgICAgICAgICAgICAgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRlbXBbdF0gIT0gJ1wwJykgewogICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc1tuKzFdW3RdID0gdGVtcFt0XTsKICAgICAgICAgICAgICAgICAgICAgICAgdCsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3b3Jkc1tuKzFdW3RdID0gJ1wwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KIAogICAgICAgIC8vINCS0YvQstC+0LTQuNC8INC+0YLRgdC+0YDRgtC40YDQvtCy0LDQvdC90L7QtSDQv9GA0LXQtNC70L7QttC10L3QuNC1CiAgICAgICAgZm9yIChpbnQgbSA9IDA7IG0gPCB3b3JkX2NvdW50OyBtKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIlcyIsIHdvcmRzW21dKTsKICAgICAgICAgICAgaWYgKG0gPCB3b3JkX2NvdW50IC0gMSkgcHJpbnRmKCIgIik7CiAgICAgICAgfQogICAgICAgIGlmIChjICE9ICdcMCcpIHByaW50ZigiJWMgIiwgYyk7CiAgICB9CiAKICAgIHByaW50ZigiXG4iKTsKICAgIHJldHVybiAwOwp9