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

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

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

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

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

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

Поможете?
Спасибо)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2015, 18:46
Ответы с готовыми решениями:

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

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

Поиск знаков препинания в строке
Поиск знаков препинания в строке, как организовать? #include <stdio.h> #include <stdlib.h> int main() { int i, j, la,...

2
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
28.11.2015, 20:45
Лучший ответ Сообщение было отмечено Анатолий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
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.11.2015, 09:36
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2015, 09:36
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru