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

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

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

ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ В С++ - C++

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

помогите, написать код программы, экзамен скоро, очень надо.
Нужно определить количество слов, начинающихся с буквы "c"
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 18:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ В С++ (C++):

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

Обработка символьной информации - C++
Помогите с заданием, кто сможет. Задание: В заданном тексте указать слово, в котором доля гласных максимальна.

Обработка символьной информации - C++
Помогите пожалуйста разобраться в задаче. (66.) Гороскоп. В древнеяпонском календаре был принят 60-летний цикл из пяти 12-летних циклов,...

Обработка символьной информации - C++
добрый вечер! У кожній з 10 рядкових змінних міститься назва художнього твору і прізвище автора. Вивести на екран наявні серед них твори...

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

Обработка символьной информации - C++
Добрый день. Форумчани, очень нужна помощь, вот задание:Распечатать в порядке, обатном алфавитному, все буквы, которые входят в текст не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
iama
1250 / 975 / 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
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
16.05.2011, 18:51 #4
ForEveR, а чо, у меня какой-то компилятор (сейчас не могу вспомнить какой), без этого строки кушать отказывался
0
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
16.05.2011, 18:52 #5

Не по теме:

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



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

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

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

Обработка символьной информации - C++
Помогите разработать программу где дефис в доменном имени может быть только одиночным. есть пример программы // Подсчет гласных...

Обработка символьной информации.Гороскоп - C++
Прошу помощи с решением задачи.Буду очень благодарен. Суть такова-при вводе года(любой комбинации чисел), программа должна выдавать цвет...


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

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

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