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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
пимка
0 / 0 / 0
Регистрация: 27.08.2011
Сообщений: 5
#1

Вывести все слова начинающиеся с заданной буквы. - C++

23.10.2011, 10:08. Просмотров 2421. Ответов 7
Метки нет (Все метки)

Не могу создать программу. Задание (Текст слов вводится с клавиатуры через запятую. Затем вводится буква. Нужно вывести все слова начинающиеся с этой буквы.) Объясните хотя бы как ее делать!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2011, 10:08     Вывести все слова начинающиеся с заданной буквы.
Посмотрите здесь:

C++ Вывести на экран все слова текста, начинающиеся с гласной буквы
Считать текст из файла и вывести на экран все слова текста, начинающиеся с гласной буквы C++
Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы C++
В заданной последовательности слов найдите все слова, начинающиеся с заданной приставки C++
C++ Вывести все слова из строки, начинающиеся с определенной буквы
C++ Найти все слова, начинающиеся с буквы b
C++ Вывести все слова начинающиеся с заглавной буквы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,586
Записей в блоге: 12
23.10.2011, 11:22     Вывести все слова начинающиеся с заданной буквы. #2
в книге Бондарёв .... была описана фунцкия найти в строке первую буквы вот тебе движок
char stroka[1000];
int ykaz=0;
while(эта функция не помню как называетс((ykaz=&stroka[ykaz],"тут будет твоя буква")))
когда функия вернёт 0 то есть ошибку while перестанет работать
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
24.10.2011, 11:27     Вывести все слова начинающиеся с заданной буквы. #3
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
64
65
66
67
68
69
70
71
72
73
74
75
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
 
struct string_node {
    char *string;
    struct string_node *next;
};
 
struct string_list {
    struct string_node *head;
};
 
struct string_node *
string_node_new(const char *string, struct string_node *next) {
    struct string_node *node = malloc(sizeof(struct string_node));
    if (node) {
        node->next = next;
        if ((node->string = strdup(string)) == NULL) {
            free(node);
            node = NULL;
        }
    }
 
    return node;
}
 
void string_list_free(struct string_list *list) {
    struct string_node *it = NULL;
    struct string_node *buf = NULL;
    assert(list);
 
    it = list->head; 
    while (it) {
        buf = it;
        it = it->next;
 
        free(buf->string);
        free(buf);
    }
}
 
struct string_node *
string_list_add(struct string_list *list, char *string) {
    assert(string);
    assert(list);
    
    return (list->head = string_node_new(string, list->head));
}
 
int main() {
    struct string_list list = { 0 };
    struct string_node *it = NULL;
    char buf[BUFSIZ] = { 0 };
    char ch = 0;
 
    printf("Enter words: ");
    while (scanf("%s, ", buf) != EOF) {
        if (string_list_add(&list, buf) == NULL) {
            fprintf(stderr, "allocating memory error\n");
            break;
        }
    }
 
    printf("Enter letter: ");
    scanf("%c", &ch);
    for (it = list.head; it; it = it->next) {
        if (it->string[0] == ch)
            printf("%s\n", it->string);
    }
 
    string_list_free(&list);
    return 0;
}
xAtom
 Аватар для xAtom
911 / 736 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.10.2011, 15:16     Вывести все слова начинающиеся с заданной буквы. #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
30
31
32
33
34
#include <stdio.h>
#include <ctype.h>
 
// поиск слова на указанную букву без учёта регистра букв
char*  find_ch_word(char* dst, char* ptr, char ch) {
   *dst = '\0';
   while( *ptr ) {
       for(;! isalpha(*ptr) && *ptr; *ptr++);
           if(toupper(*ptr) == toupper(ch)) {
                for(; isalpha(*ptr) && *ptr; *dst++ = *ptr++);
                *dst = '\0';
                return ptr;
           }
           *ptr++;
    }
    return (*dst) ? ptr : NULL;
}
 
int  main(void) {
  char buf[32], *ptr;
  char str[255], ch;
 
  printf("enter string:");
  gets(str);
  printf("enter letter:");
  scanf("%c", &ch);
 
  ptr = str;
  while((ptr = find_ch_word(buf, ptr, ch)) != NULL)
         puts(buf);
  fflush(stdin);
  getchar();
  return 0;
}
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
24.10.2011, 15:26     Вывести все слова начинающиеся с заданной буквы. #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <boost/algorithm/string.hpp>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::vector<std::string> vec;
    boost::split(vec, str, boost::is_any_of(" ,"), boost::token_compress_on);
    char ch = 0;
    std::cin >> ch;
    std::copy_if(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"), [ch](const std::string& s) {return *s.begin() == ch;});
}
пимка
0 / 0 / 0
Регистрация: 27.08.2011
Сообщений: 5
24.10.2011, 16:34  [ТС]     Вывести все слова начинающиеся с заданной буквы. #6
Воткнул программу на DevC++ , он пишет ошибку: error: invalid conversion from `void*' to `string_node*'
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
24.10.2011, 16:45     Вывести все слова начинающиеся с заданной буквы. #7
C++
1
struct string_node *node = (string_node*)malloc(sizeof(struct string_node));
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2011, 16:46     Вывести все слова начинающиеся с заданной буквы.
Еще ссылки по теме:

C++ Вывести все слова, начинающиеся с большой буквы, из заданной строки
В заданной последовательности слов найти все слова, начинающиеся с заданной приставки C++
Вывести слова, начинающиеся с гласной буквы C++
Строки: вывести слова с наименьшим количеством букв; удалить слова, начинающиеся с маленькой буквы C++

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
24.10.2011, 16:46     Вывести все слова начинающиеся с заданной буквы. #8
Цитата Сообщение от пимка Посмотреть сообщение
Воткнул программу на DevC++ , он пишет ошибку: error: invalid conversion from `void*' to `string_node*'
Видимо Вы компилируете проект как C++. В C++ запрещено неявное преобразование из void *.
Yandex
Объявления
24.10.2011, 16:46     Вывести все слова начинающиеся с заданной буквы.
Ответ Создать тему
Опции темы

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