Форум программистов, компьютерный форум CyberForum.ru

Дано предложение. Поменять местами его первое и последнее слово. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Катя Данильчик
0 / 0 / 0
Регистрация: 22.02.2012
Сообщений: 9
07.04.2012, 01:46     Дано предложение. Поменять местами его первое и последнее слово. #1
Дано предложение. Поменять местами его первое и последнее слово.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2012, 01:46     Дано предложение. Поменять местами его первое и последнее слово.
Посмотрите здесь:

. Если первое и последнее его слова имеют одинаковую длину, поменять их местами. C++
C++ Поменять местами первое и последнее слово в строке
Поменять местами первое и последнее слово в предложении C++
C++ Поменять местами первое и последнее слово, найти слова-палиндромы
Поменять местами в строке первое и последнее слово C++
C++ Дано слово из четного числа букв. Поменять местами его половины
Поменять местами первое и последнее слово в предложении C++
C++ Ввести предложение. Поменять первое и второе слово местами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.04.2012, 04:10     Дано предложение. Поменять местами его первое и последнее слово. #2
Если считать, что слова разделены одним или несколькими пробелами, и не заморачиваться знаками препинания, то вот пол-сотни строк свежего быдлокода
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int main(void) {
    char strIn[BUFSIZ], strOut[BUFSIZ], * pFirst, * pMiddle, * pLast;
    
    while ( printf("String: ") && fgets(strIn, BUFSIZ, stdin) && *strIn != '\n' ) {
        
        for ( pFirst = strIn; *pFirst != '\0' && isspace(*pFirst); ++pFirst )
            ;
        
        if ( *pFirst == '\0' ){
            fprintf(stderr, "Empty string, only spaces.\n");
            continue;
        }
        
        if ( ( pMiddle = strchr(pFirst, ' ') ) == NULL ) {
            fprintf(stderr, "Only one word in string.\n");
            continue;
        }
        
        while ( *pMiddle != '\0' && isspace(*pMiddle) )
            *pMiddle++ = '\0';
        
        if ( *pMiddle == '\0' ) {
            fprintf(stderr, "Can't find second word in string.\n");
            continue;
        }
        
        for ( pLast = pMiddle + strlen(pMiddle) - 1; pLast > pMiddle && isspace(*pLast); --pLast )
            *pLast = '\0';
        
        if ( ( pLast = strrchr(pMiddle, ' ') ) == NULL ){ // особый случай - два слова в строке
            strcpy(strOut, pMiddle);
            strcat(strOut, " ");
            strcat(strOut, pFirst);
        }
        else {
            while ( isspace(*pLast) )
                *pLast-- = '\0';
            while ( *++pLast == '\0' )
                ;
            strcpy(strOut, pLast);
            strcat(strOut, " ");
            strcat(strOut, pMiddle);
            strcat(strOut, " ");
            strcat(strOut, pFirst);
        }
        
        printf("Result: %s\n", strOut);
    }
    
    return 0;
}
Yandex
Объявления
07.04.2012, 04:10     Дано предложение. Поменять местами его первое и последнее слово.
Ответ Создать тему
Опции темы

Текущее время: 20:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru