0 / 0 / 0
Регистрация: 01.10.2017
Сообщений: 10
1

Строка: Удалить все слова-палиндромы, имеющие минимальную длину среди всех слов.

01.10.2017, 21:39. Показов 2129. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ввести строку символов (предусмотреть ввод пустой строки или строки из одних пробелов). Разделителями слов в строке являются пробелы (один или несколько). Использовать string запрещено.
Удалить все слова-палиндромы, имеющие минимальную длину среди всех слов. С++
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2017, 21:39
Ответы с готовыми решениями:

Дана строка символов. Найти слова-палиндромы, имеющие четную длину
Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не...

Удалить из строки слова-палиндромы, имеющие наибольшую длину
ввести строку символов ( предусмотреть ввод пустой строки или строки из одних пробелов ) ....

Найти слова-палиндромы, имеющие чётную длину
дана строка символов. Группы символов, разделенные пробелами(одним или несколькими) и не содержащие...

Распечатать слова, имеющие максимальную и минимальную длину
Строка содержит простое предложение, в котором слова отделяются символом «пробел». Распечатать...

1
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
02.10.2017, 09:59 2
Лучший ответ Сообщение было отмечено Zlata121212 как решение

Решение

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
56
57
58
59
60
61
62
63
#include <iostream>
#define is_space(c)  ((c) == ' ' || (c) == '\t' || (c) == '\n')
bool  is_poli(const char* a, const char* b);
int   min_word_len(const char* s);
char* remove_words(char* s, int m);
 
int main(void){
    char s[64] = "ADA KAZAK SOS JOCK EYE COBOL WOW XYYX SS OO";
    std::cout << remove_words(s, min_word_len(s)) << std::endl;
    std::cin.get();
    return 0;
}
 
char* remove_words(char* s, int m){
    bool  ok;
    char* i, *t = s;
    for(char* p = s; *s; ){
        if(!is_space(*p)){
            i = p;
            while(*i && !is_space(*i))
                ++i;
            
            ok = ((int)(i - p) < m);
            if(ok){
                ok = is_poli(p, i);
                if(ok)
                    p = i;
            }
 
            if(!ok){
                for(; p != i; *s++ = *p++)
                    ;
            }
            *s = *p;
        } else
            *s++ = *p++;
    }
    return t;
}
 
bool is_poli(const char* a, const char* b){
    if(a < b)
        --b;
    while((a < b) && (*a == *b)){
        ++a;
        --b;
    }
    return (a >= b);
}
 
int min_word_len(const char* s){
    int m = 0, i = 0;
    do {
        if(*s && !is_space(*s))
            ++i;
        else if(i > 0){
            if(!is_poli(s - i, s) && (!m || (i < m)))
                m = i;
            i = 0;
        }
    } while(*s++ != '\0');
    return m;
}
0
02.10.2017, 09:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2017, 09:59
Помогаю со студенческими работами здесь

Дана строка X. Напечатайте все слова, начинающиеся с цифры и имеющие длину не более трех символов
Дана строка X. Напечатайте все слова, начинающиеся с цифры и имеющие длину не более трех символов.

Создать массив слов строки и напечатать все слова, имеющие длину менее 3-х символов
Нуждаюсь в решении следующей задачи на Pascal: Дана строка S, которая содержит слова,...

Удалить из строки все слова, имеющие нечетные порядковые номера и четную длину
2. Вводится строка. Удалить из строки все слова, имеющие нечетные порядковые номера и четную длину...

Подсчитать количество слов в тексте и вывести на экран все слова, имеющие длину более 3-х символов
Дан текст. Подсчитать количество слов в нем и вывести на экран все слова, имеющие длину более 3-ех...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru