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

Удалить из строки все слова в которых есть заданная буква

13.01.2011, 13:22. Показов 1186. Ответов 5
Метки нет (Все метки)

Здравствуйте вот у меня задача: Дана строка, содержащая последовательность слов, разделенных пробелами. Удалить из строки все слова в которых есть заданная буква.


я взял из соседней темы программу , отправил вот что прислали: "Вам нужно не просто напечатать строку с удаленными словами, а именно сформировать такую строку в отдельной перменной, и лишь потом вывести на экран ее значение."

помогите плз.
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#define SHORTSTR 256
char *nextWord(const char *str){
        char *p;
        for ( p = (char*)str; *p != '\0' && !isspace(*p); p++ )
                ;
        for ( ; *p != '\0' && isspace(*p); p++ )
                ;
        return ( *p == '\0' ) ? NULL : p;
}
 
char *getWord(char *wrd, size_t len, const char *str){
        char *p;
        char *w;
        for ( p = (char*)str, w = wrd; *p != '\0' && !isspace(*p) && --len > 0; p++, w++ )
                *w = *p;
        *w = '\0';
        return wrd;
}
 
int main(){
        char str[SHORTSTR];
        char wrd[SHORTSTR];
        char *strp;
        char ex_char;
 
        while ( 1 ){
                printf("Vvedite stroky ili 0 dlya vyxoda exit\n");
                fgets(str, SHORTSTR, stdin);
                if ( *str == '0' )
                        break;
                printf("Vvedite simvol dlya ydaleniya: ");
                fgets(wrd, SHORTSTR, stdin);
                ex_char = *wrd;
                for ( strp = str; strp != NULL; strp = nextWord(strp) )
                        if ( !strchr(getWord(wrd, SHORTSTR, strp), ex_char) )
                                printf("%s ", wrd);
                printf("\n");
        }
        return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2011, 13:22
Ответы с готовыми решениями:

Удалить из строки слова, в которых есть буква 'a'
Создать консольное приложение, в котором можно удалить из строки слова, в которых есть буква 'a'.

Как удалить все слова в строке, в которых есть буква а?
Как сделать эту прогу?

Найти слова в которых есть заданная буква
Помогите, пожалуйста, написать программу. Дано текст, найти все слова, в которых есть буква а....

Из введенной строки удалить все слова, третья буква которых согласная
удаляет все слова, третья буква которых согласная. (С клавиатуры вводится произвольная строка...

5
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.01.2011, 13:34 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
#include <stdio.h>
#include <string.h>
 
#define DELIM " \t\n"
#define CHAR 'r'
 
int main()
{
    char testline[80] = "anecdotal theories have been advanced";
    char* p = NULL; // Вот в этом указателе мы и формируем строку
    
    printf("Line to process: `%s'\n", testline);
    printf("Character to delete: `%c'\n", CHAR);
    
    printf("Allowed words:\n\n");
    
    p = strtok(testline, DELIM);
    
    do
    {
        if(strchr(p, CHAR) == NULL)
            printf("\t%s\n", p);
    }
    while((p = strtok(NULL, DELIM)) != NULL);
    
    return 0;
}
Переделай под себя, и все
0
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 14
13.01.2011, 14:19  [ТС] 3
да вот знать бы как переделать))
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
13.01.2011, 14:20 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <iterator>
 
int main()
{
     char c;
     std::cout<<"Enter symbol: ";
     std::cin>>c;
     std::string str;
     std::cout<<"Enter string\n";
     std::cin.get();
     std::getline(std::cin, str);
     std::vector<std::string> vec;
     std::string tmp;
     std::istringstream ist(str);
     while(ist >> tmp)
         vec.push_back(tmp);
     vec.erase(std::remove_if(vec.begin(), vec.end(), [c](std::string str) -> bool
     {
         return str.find(c) != std::string::npos;
     }), vec.end());
     std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, " "));
     system("Pause");
     return 0;
}
0
Nameless One
13.01.2011, 14:24
  #5

Не по теме:

Northex, как говорил дедушка Ленин...

0
1 / 1 / 0
Регистрация: 14.12.2010
Сообщений: 14
13.01.2011, 14:29  [ТС] 6
Мне нужно программы на Borland C 3.1 просто экзамен скоро а мне эту лабу сдать надо я уже стоко мучаюсь. Плз помогите)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2011, 14:29
Помогаю со студенческими работами здесь

Указатели (Распечатать все слова, в которых встречается заданная пользователем буква)
Дано предложение(ввести с консоли). Распечатать все слова, в которых встречается заданная...

Дана строка, состоящая из слов. Удалить из строки все слова, в которых хотя бы одна буква встречается дважды
Delphi 6. Нужно с визуализацией, вывод результата в форму.

Удалить из текстовой строки все слова в которых есть непарное количество согласных букв
удалить из текстовой строки все слова в которых есть непарное количество согласных букв.

Удалить из массива все элементы, в записи которых есть заданная цифра
дан одномерный массив целых чисел заполненный случайным образом числами из промежутка удалить из...


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

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

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