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

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

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

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

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

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

Вывести все слова, начинающиеся с большой буквы, из заданной строки - C++
С клавиатуры вводится строка S. Она содержит различные символы и пробелы. Части строки, разделенные пробелами, называются словами. ...

Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы - C++
Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы (к примеру "а"). Составить программу на C++. Заранее...

Вывести все слова начинающиеся с заглавной буквы - C++
С клавиатуры вводится строка S. Она содержит различные символы и пробелы. Части строки, разделенные пробелами, называются словами. Вывести...

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

Вывести на экран все слова текста, начинающиеся с гласной буквы - C++
1. Дана строка символов, состоящая из произвольных десятичных цифр, разделенных пробела¬ми. Выведите на экран четные числа этой строки. ...

Считать текст из файла и вывести на экран все слова текста, начинающиеся с гласной буквы - C++
Напиcать программу, которая считывает текст из файла и выводит на экран все слова текста, начинающиеся с гласной буквы, меняя ее на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
23.10.2011, 11:22 #2
в книге Бондарёв .... была описана фунцкия найти в строке первую буквы вот тебе движок
char stroka[1000];
int ykaz=0;
while(эта функция не помню как называетс((ykaz=&stroka[ykaz],"тут будет твоя буква")))
когда функия вернёт 0 то есть ошибку while перестанет работать
1
fasked
Эксперт С++
4937 / 2517 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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;
}
1
xAtom
915 / 740 / 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;
}
1
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 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;});
}
1
пимка
0 / 0 / 0
Регистрация: 27.08.2011
Сообщений: 5
24.10.2011, 16:34  [ТС] #6
Воткнул программу на DevC++ , он пишет ошибку: error: invalid conversion from `void*' to `string_node*'
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
24.10.2011, 16:45 #7
C++
1
struct string_node *node = (string_node*)malloc(sizeof(struct string_node));
0
fasked
Эксперт С++
4937 / 2517 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.10.2011, 16:46 #8
Цитата Сообщение от пимка Посмотреть сообщение
Воткнул программу на DevC++ , он пишет ошибку: error: invalid conversion from `void*' to `string_node*'
Видимо Вы компилируете проект как C++. В C++ запрещено неявное преобразование из void *.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2011, 16:46
Привет! Вот еще темы с ответами:

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

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

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

Строки: вывести слова с наименьшим количеством букв; удалить слова, начинающиеся с маленькой буквы - C++
Здравствуйте. Помогите, пожалуйста сделать программу... Задание: Составить программу, которая выводит на экран слова с наименьшим...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.10.2011, 16:46
Ответ Создать тему
Опции темы

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