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

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

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

Дано строку. Найти количество символов препинання(.,!?: - C++

13.06.2013, 09:11. Просмотров 347. Ответов 8
Метки нет (Все метки)

2.Дано строку. Найти количество символов препинання(.,!?:.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2013, 09:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дано строку. Найти количество символов препинання(.,!?: (C++):

Ввести строку символов. Найти количество неповторяющихся символов - C++
Ввести строку символов. Найти количество неповторяющихся символов. Вот мой текст программы (рабочий): #include <iostream.h> ...

Дано строку. Найти количество слов строки и напечатать их в виде списка - C++
2.Дано строку. Найти количество слов строки и напечатать их в виде списка.

Найти количество символов в строке, найти заданные буквы, разделить количество букв на количество символов - C++
Написать код который сперва подсчитывает количество символов в строке а потом из этих находит буквы (a,e,y,u,i) и делит количество букв на...

Найти количество символов всех строк файла и количество символов в определенной строке - C++
Здравствуйте! Я хотел бы попросить помощи в решении задачки! У меня не получается найти количество символов всех строчек и количество...

Дана строка символов. Изменить строку – во всех словах, имеющих нечетное количество символов, средний символ удалить. - C++
Дана строка символов. Изменить строку – во всех словах, имеющих нечетное количество символов, средний символ удалить. помогите...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,416
Записей в блоге: 3
Завершенные тесты: 1
13.06.2013, 09:19 #2
Каждого из знаков или всего?
0
Lvaruky
8 / 8 / 0
Регистрация: 10.05.2013
Сообщений: 26
13.06.2013, 09:23 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <map>
 
using namespace std;
 
int main () {
    string str;
    getline(cin,str);
    map<char,int> res;
    for (int i = 0; i < str.size(); i++) {
        res[str[i]]++;
    }
    cout<<"( "<<res['(']<<endl;
    cout<<") "<<res[')']<<endl;
    cout<<". "<<res['.']<<endl;
    cout<<", "<<res[',']<<endl;
    cout<<"? "<<res['?']<<endl;
    cout<<"! "<<res['!']<<endl;
    cout<<": "<<res[':']<<endl;
    return 0;
}
1
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2013, 09:29 #4
Цитата Сообщение от Lvaruky Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
int main ()
{
 string str;
 getline(cin,str);
 map<char,int> res;
 for (int i = 0; i < str.size(); i++)
 {
  res[str[i]]++;
 }
А зачем расходовать память на счёт остальных символов? Хорошо, если это ASCII. А если уникод на все 6 байт?
1
PIVEHb
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 23
13.06.2013, 09:30  [ТС] #5
Всего.
0
Lvaruky
8 / 8 / 0
Регистрация: 10.05.2013
Сообщений: 26
13.06.2013, 09:33 #6
taras atavin, согласен, первое, что пришло в голову.

PIVEHb, если всего, то можно просто завести интовый счетчик, и увеличивать его если символ подходит под твои. Что-то типа
C++
1
2
3
4
5
for (int i = 0; i < str.size(); i++) {
        if (str[i]=='(' || str[i]='.' /*и т.д.*/ ) {
            res++;
        }
    }
1
PIVEHb
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 23
13.06.2013, 09:49  [ТС] #7
подщитать общее количество
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,416
Записей в блоге: 3
Завершенные тесты: 1
13.06.2013, 09:50 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <numeric>
 
int main(){
    std::string str;
    std::string findStr="(),!?:.";
    std::getline(std::cin,str);
    std::cout<<std::accumulate  (str.begin(),str.end(),0,
                                                    [&findStr](int x,int y){
                                                        return x+(findStr.find(y)!=std::string::npos);
                                                    }
                                        )<<
        std::endl;
}
0
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
13.06.2013, 17:50 #9
Ну и так можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <algorithm>
#include <windows.h>
 
int main(int argc, char** argv) 
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
    
    std::string str = "(Helo), ::w.orld!?";
    //std::getline(std::cin,str);
    std::cout<<std::count_if(str.begin(), str.end(), ispunct)<<'\n';
    
    return 0;
}
Добавлено через 1 минуту
для любых знаков препинания.

Добавлено через 7 минут
Или, если boost имеется, поиск только некоторых знаков:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <algorithm>
#include <windows.h>
#include <boost/algorithm/string.hpp>
 
int main(int argc, char** argv) 
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
    
    std::string str = "(Helo))))))))))))))))))), ::w.orld!?";
    //std::getline(std::cin,str);
    std::cout<<std::count_if(str.begin(), str.end(), boost::algorithm::is_any_of("(.,!?:"))<<'\n';
    
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 17:50
Привет! Вот еще темы с ответами:

Дано целое число N (> 0) и символ C. Вывести строку длины N, кото-рая состоит из символов C - C++
ребят писал в MC visual, а в dev++ не компилируется, помогите плиз #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;clocale&gt; using...

Дано строку. Подсчитать количество содержащихся в ней цифр - C++
Дано строку. Подсчитать количество содержащихся в ней цифр. Добавлено через 2 часа 27 минут Вот программа на паскале помогите в С++...

Дано название футбольного клуба.Определить количество символов в нем (строки) - C++
Дано название футбольного клуба.Определить количество символов в нем (строки)

Найти количество символов в самой длинной цепочке из одинаковых символов - C++
Дана строка символов St длиной не более 72, которая может состоять из цифр, малых латинских букв и знаков '+' '-' '*' '/' '.' ')' '(' ...


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

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

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