Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
artscorp
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 11
1

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

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

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

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

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

Составить таблицу слов данного текста, начинающихся с буквы "А", с указанием числа повторений каждого слова
нужен код как можно проще с использованием строк

Найти количество слов начинающихся на букву "а"
Всем добрый день. Помогите кто-нибудь с этим заданием: заданая строка символов....

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

15
iama
1326 / 979 / 119
Регистрация: 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
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 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
1326 / 979 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 18:51 4
ForEveR, а чо, у меня какой-то компилятор (сейчас не могу вспомнить какой), без этого строки кушать отказывался
0
Mиxaил
534 / 439 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
16.05.2011, 18:52 5

Не по теме:

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



iama, можно просто:
C++
1
using namespace std;
строки входят в стандартное пространство =)
0
iama
1326 / 979 / 119
Регистрация: 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
1326 / 979 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 19:08 9
artscorp, isalpha возвращает истину, когда аргумент (символ) является буквой (только латиница). А вообще гугл никто не отменял
0
asics
Freelance
Эксперт С++
2858 / 1793 / 355
Регистрация: 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
1326 / 979 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 19:11 11
asics, это будет корректно только при единственном разделителе - пробеле
0
asics
Freelance
Эксперт С++
2858 / 1793 / 355
Регистрация: 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
1326 / 979 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 19:23 13
asics, тогда выходит совсем не так красиво
0
asics
Freelance
Эксперт С++
2858 / 1793 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
16.05.2011, 19:25 14
Цитата Сообщение от iama Посмотреть сообщение
asics, тогда выходит совсем не так красиво
А мне кажиться, что в С++ использование стандартных алгоритмов это всегда/в большенстве случаев красиво.
0
iama
1326 / 979 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 19:28 15
asics, тогда вам нужно будет считать строку, заменить знаки препинания на проблелы, потом только парсить, у ForEveR красивей, а моему решению поверят, что студент сам его написал
0
asics
Freelance
Эксперт С++
2858 / 1793 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
16.05.2011, 19:32 16
Цитата Сообщение от iama Посмотреть сообщение
у ForEveR красивей
Я этого и не отрицал, конечно же boost здесь будет рулить.
Цитата Сообщение от iama Посмотреть сообщение
тогда вам нужно будет считать строку, заменить знаки препинания на проблелы, потом только парсить
Что серйозно ?! (шутка)
0
16.05.2011, 19:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 19:32

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

Ввести имя фамилию и отчество как одно данное типа строка. Определить длину строки и количество гласных в нем. Удалить все буквы "а" и "о" в фамилии.
Помогите пожалуйста. Очень нужно сделать программу. Ввести имя фамилию и...

Подсчитать количество слов, содержащих три буквы "c"
Люди помогите, крик души. Завтра сдавать а ничего не готово . Нужно написать...


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

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

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