С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 4
Регистрация: 03.03.2015
Сообщений: 51
1

Запомнить положение знаков препинания в строке string

28.11.2015, 18:46. Показов 1107. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Дана строка string. Нужно неким образом запомнить положение знаков препинания в строке. Желательно, после какого по счету слова стоит символ.

Например, есть строка:
"xxx x xxx, xxxx xxxxxx xx xxxxx, xxxxxxxx x."

В итоге должен получиться массив int-ов (не использовать вектор):
3 7

Поможете?
Спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2015, 18:46
Ответы с готовыми решениями:

Программа для вывода на экран знаков препинания(с указанием их АСКИ-кода) знаков препинания
Напишите и отладьте программу для вывода на экран(с указанием их АСКИ -кода) знаков препинания

Поиск знаков препинания в строке
Код не компилируется выдает ошибку, пример из учебника автор Айвор Хортон // Ex4_19.cpp : main...

Поиск знаков препинания в строке
Поиск знаков препинания в строке, как организовать? #include <stdio.h> #include <stdlib.h> ...

Найти количество знаков препинания в строке
задана строка.найти количество знаков препинания в строке C++

2
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
28.11.2015, 20:45 2
Лучший ответ Сообщение было отмечено Анатолий228 как решение

Решение

если строка только из пробелов то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
int a[123], j,c;
string s;
int main() {
    getline(cin, s);
    for (int i = 0;i < s.size();i++) {
        if (s[i] == ' ')
            c++;
        if (s[i] == ',')
            a[j++] = c + 1;
    }
    for (int i = 0;i < j;i++)
        cout << a[i] << " ";
    return 0;
}
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.11.2015, 09:36 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
76
77
78
79
80
81
/*
Дана строка string. Нужно неким образом запомнить положение знаков
препинания в строке. Желательно, после какого по счету слова стоит символ.
 
Например, есть строка:
"xxx x xxx, xxxx xxxxxx xx xxxxx, xxxxxxxx x."
 
В итоге должен получиться массив int-ов (не использовать вектор):
3 7
*/
#include <algorithm>
#include <cctype>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////
typedef     std::string                 T_str;
typedef     std::vector     < int   >   T_positions;
/////////////////////////////////////////////////////////////////////
T_positions     get_punct_positions_of_str( T_str   const   &   s )
{
    T_positions     positions;
    int     counter     =   0;
 
    for( size_t  i = 0; i < s.size(); ++i )
    {
        bool    is_last_symb_in_word
 
            =       !std::isspace( s[i] )
 
                &&  (
                            i   ==  s.size() - 1
                        ||  std::isspace( s[i + 1] )
                    );
 
        if( is_last_symb_in_word )
        {
            ++counter;
 
            if  (
                    std::ispunct( s[i] )
                )
            {
                positions.push_back( counter );
            }//if
        }//if
    }//for
 
    return  positions;
}
/////////////////////////////////////////////////////////////////////
int     main()
{
    srand(unsigned(time(0)));
 
    T_str   s   =   rand() % 2
                        ?   "xxx x xxx, xxxx xxxxxx xx xxxxx, xxxxxxxx x."
                        :   "bu bu";
 
    T_positions     punct_positions     =   get_punct_positions_of_str(s);
 
    if  (
            punct_positions.empty()
        )
    {
        std::cout   <<  "No punctuation."
                    <<  std::endl;
    }
    else
    {
        std::copy
            (
                punct_positions.begin       (),
                punct_positions.end         (),
                std::ostream_iterator<int>  ( std::cout, " " )
            );
    }//else
}
0
29.11.2015, 09:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2015, 09:36
Помогаю со студенческими работами здесь

Кол-во знаков препинания и букв в строке
Требуется подсчитать кол-во букв и знаков препинания в строке, но программа упорно не хочет считать...

В строке подсчитать количество знаков препинания
В общем задание обстоит так:Ввести с экрана строку. В строке подсчитать количество знаков...

Подсчёт количества знаков препинания в строке
Здравствуйте. Помогите пожалуйста написать простейший алгоритм подсчёта количества знаков...

Посчитать количество знаков препинания в строке
Вводится строка. Посчитать количество знаков препинания. Помогите решить пожалуйста

Подсчитать количество знаков препинания в строке
Подсчитать количество знаков препинания в строке. Строка - &quot;Осень,,Падают листья,,зима,,!&quot;. Вывести...

Посчитать количество знаков препинания в строке
Только без метода IsPunctuation а знаки занести в массив как мне это сделать ? using System;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru