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

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

Войти
Регистрация
Восстановить пароль
 
 
artscorp
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 11
#1

Определить количество слов, начинающихся с буквы "c" - C++

16.05.2011, 18:41. Просмотров 796. Ответов 15
Метки нет (Все метки)

помогите, написать код программы, экзамен скоро, очень надо.
Нужно определить количество слов, начинающихся с буквы "c"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 18:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить количество слов, начинающихся с буквы "c" (C++):

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

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

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

Найти количество слов, начинающихся с буквы b - C++
#include <iostream> #include <string> using namespace std; int main() { string s,st; cout << "Vvedite stroku: "; ...

Подсчитать количество слов, начинающихся с буквы “a” - C++
Подсчитать количество слов, начинающихся с буквы “a”.?? помогите с решением..

Подсчитать количество слов, начинающихся с буквы 'а' - C++
Дано предложение-строка. Подсчитать количество слов, начинающихся с буквы 'а'.

15
iama
1254 / 979 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 18:44 #2
как разделяются слова в строке?

Добавлено через 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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
using std::string;
 
int main()
{
    string s; vector <string> ss;
    int i, j, l, p = 0;
 
    getline(cin, s);
 
    l = s.length();
 
    while (p < l)
    {
        while (p < l && !isalpha(s[p])) p++;
        i = p + 1;
        while (i < l && isalpha(s[i])) i++;
        ss.push_back(s.substr(p, i - p));
        p = i;
    }
 
    for (i = 0; i < ss.size() - 1; i++)
        if (ss[i][0] == 'c') cout << ss[i] << endl;
 
    return 0;
}
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.05.2011, 18:48 #3
iama, Ну это ад аще
C++
1
2
using namespace std;
using std::string;
Еще варик.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
#include <algorithm>
#include <boost/algorithm/string/split.hpp>
 
bool isDelim(char c)
{
    return isspace(c) || ispunct(c);
}
 
int main()
{
    char symbol = 'c';
    std::string string;  
    std::getline(std::cin, string);
    std::vector<std::string> vec;
    boost::split(vec, string, isDelim, boost::compress_token_on);
    std::cout << std::count_if(vec.begin(), vec.end(), [symbol](const std::string& str) {return *str.begin() == symbol;});
}
0
iama
1254 / 979 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 18:51 #4
ForEveR, а чо, у меня какой-то компилятор (сейчас не могу вспомнить какой), без этого строки кушать отказывался
0
Mиxaил
534 / 439 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
16.05.2011, 18:52 #5

Не по теме:

Да, это сильно! =)



iama, можно просто:
C++
1
using namespace std;
строки входят в стандартное пространство =)
0
iama
1254 / 979 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 18:55 #6
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
int main()
{
        string s; vector <string> ss;
        int i, j, l, p = 0;
 
        getline(cin, s);
        s += ' ';
 
        l = s.length();
 
        while (p < l)
        {
                while (p < l && !isalpha(s[p])) p++;
                i = p + 1;
                while (i < l && isalpha(s[i])) i++;
                ss.push_back(s.substr(p, i - p));
                p = i;
        }
 
        for (i = 0; i < ss.size() - 1; i++)
                if (ss[i][0] == 'c') cout << ss[i] << endl;
 
        return 0;
}
Добавлено через 1 минуту

Не по теме:

Mиxaил, чорд, логично, std::string принадлежит std, но, говорю же, были случаи

0
Mиxaил
16.05.2011, 18:57
  #7

Не по теме:

iama, я уже увидел, что Вы написали...с сообщением меня определи просто

0
artscorp
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 11
16.05.2011, 19:05  [ТС] #8
а что это:
C++
1
2
3
4
 while (p < l && !isalpha(s[p])) p++;
                i = p + 1;
                while (i < l && isalpha(s[i])) i++;
                ss.push_back(s.substr(p, i - p));
что означает isalpha
0
iama
1254 / 979 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 19:08 #9
artscorp, isalpha возвращает истину, когда аргумент (символ) является буквой (только латиница). А вообще гугл никто не отменял
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
16.05.2011, 19:08 #10
А не легче...
C++
1
2
3
4
5
6
std::istringstream ist(str);
size_t cnt = 0;
while(ist >> str)
  if(*str.begin() == 'c')
    ++cnt;
std::cout << cnt;
0
iama
1254 / 979 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 19:11 #11
asics, это будет корректно только при единственном разделителе - пробеле
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
16.05.2011, 19:22 #12
iama, Ok.Что мешает тогда зделать так:
C++
1
std::replace_if(str.begin(), str.end(), ispunct, ' ');
0
iama
1254 / 979 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 19:23 #13
asics, тогда выходит совсем не так красиво
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
16.05.2011, 19:25 #14
Цитата Сообщение от iama Посмотреть сообщение
asics, тогда выходит совсем не так красиво
А мне кажиться, что в С++ использование стандартных алгоритмов это всегда/в большенстве случаев красиво.
0
iama
1254 / 979 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 19:28 #15
asics, тогда вам нужно будет считать строку, заменить знаки препинания на проблелы, потом только парсить, у ForEveR красивей, а моему решению поверят, что студент сам его написал
0
16.05.2011, 19:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 19:28
Привет! Вот еще темы с ответами:

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

Подсчитать количество слов в строке начинающихся с буквы 'а' - C++
Всем привет!Я в программировании ноль,поэтому очень прошу помочь с программой:Ввести с экрана строку.Подсчитать,сколько слов в строке...

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

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


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

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

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