Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
nvc
0 / 0 / 0
Регистрация: 06.04.2017
Сообщений: 5
#1

После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет - C++

07.04.2017, 20:59. Просмотров 627. Ответов 10
Метки нет (Все метки)

Выполните задания с использованием библиотечного класса string.

Даны строка S. Необходимо после каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет. (Например, "Улица.Аптека. Фонарь" → "Улица. Аптека. Фонарь").
http://www.cyberforum.ru/cpp-beginners/thread1314182.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2017, 20:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос После каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года "весна", "лето", "осень", "зима" определить...

Создать список из целых чисел. После каждого элемента, равного "х" вставить элемент, равный "у"
Задача со стеком. Создать список из целых чисел. После каждого элемента,равного...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов),...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую...

Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его
Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово...

10
Peoples
1269 / 774 / 730
Регистрация: 06.02.2016
Сообщений: 2,083
Записей в блоге: 15
Завершенные тесты: 4
07.04.2017, 21:24 #2
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main(){
    setlocale(LC_ALL,"RUS");
    string s{"Улица.Аптека. Фонарь"};
    regex e("([[:punct:]])(\\S)");
    cout<<regex_replace(s,e,"$1 $2");
    return 0;
}
Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main(){
    setlocale(LC_ALL,"RUS");
    string s{"Улица.Аптека. Фонарь"};
    regex e("([[:punct:]])(?=\\S)");  //    regex e("([[:punct:]])(?!\\s)");
    cout<<regex_replace(s,e,"$1 ");
    return 0;
}
0
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
07.04.2017, 21:28 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    setlocale(0, "");
    string str = "Улица.Аптека. Фонарь;";
    for (int i = 0; i < str.size(); ++i)
    {
        if (i != str.size() - 1)
        {   
            if ((str[i] == '.' || str[i] == ',' || str[i] == ';') && str[i + 1] != ' ')
                str.insert(i + 1, 1, ' ');
        }
        else if (str[i] == '.' || str[i] == ',' || str[i] == ';')
            str.push_back(' ');
    }
    cout << str;
0
повар1
163 / 141 / 131
Регистрация: 24.02.2017
Сообщений: 569
Завершенные тесты: 1
07.04.2017, 22:44 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
#include <string.h>
 using namespace std;
 
int main()
{
 
string s="aaaa.sssss, ddddd;hhhh";
int pos=0;
  for(pos;pos<s.length();pos++)
  {
  if(s[pos]=='.'|| s[pos]==','|| s[pos]==';' )
  if( s[pos+1]!=' ')
  s.insert(pos+1," ");
 
  }
    cout<<s<<"\n";
system("pause");
    return 0;
}
0
_stanislav
Рука
267 / 258 / 162
Регистрация: 16.08.2014
Сообщений: 1,234
Завершенные тесты: 2
07.04.2017, 23:13 #5
nvc,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
 
int main(int argc, char* argv[] )
{
    std::string s("Улица.Аптека. Фонарь.");
    std::string::iterator it, itNext;
 
    for (it = s.begin(); it != s.end(); it++)
    {
        itNext = it + 1;
 
        switch(*it)
        {
        case '.':
        case ',':
        case ';':
            if (itNext != s.end() && *itNext != ' ')
                it++ = s.insert(itNext, ' ');
        }
    }
 
    return 0;
}
0
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
07.04.2017, 23:25 #6
повар1, твой код выйдет за границу строки, если знак препинания, после которого нужно вставить пробел, будет в конце сроки.
_stanislav, твой код после последней точки не вставляет пробел.
0
_stanislav
Рука
267 / 258 / 162
Регистрация: 16.08.2014
Сообщений: 1,234
Завершенные тесты: 2
07.04.2017, 23:30 #7
Цитата Сообщение от nd2 Посмотреть сообщение
твой код после последней точки не вставляет пробел
так и должно быть.
0
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
07.04.2017, 23:34 #8
Цитата Сообщение от _stanislav Посмотреть сообщение
так и должно быть.
Может быть, но не по заданию:
Цитата Сообщение от nvc Посмотреть сообщение
Необходимо после каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет.
0
_stanislav
Рука
267 / 258 / 162
Регистрация: 16.08.2014
Сообщений: 1,234
Завершенные тесты: 2
07.04.2017, 23:44 #9
Цитата Сообщение от nd2 Посмотреть сообщение
Сообщение от nvc
Необходимо после каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
 
int main(int argc, char* argv[] )
{
    std::string s("Улица.Аптека. Фонарь.");
    std::string::iterator it, itNext;
 
    for (it = s.begin(); it != s.end(); it++)
    {
        itNext = it + 1;
 
        switch(*it)
        {
        case '.':
        case ',':
        case ';':
            if (itNext == s.end() || *itNext != ' ')
                it++ = s.insert(itNext, ' ');
        }
    }
 
    return 0;
}
1
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
08.04.2017, 00:37 #10
C++
1
2
3
4
5
6
7
8
9
10
 
    setlocale(0, "");
    string str = "Улица.Аптека. Фонарь;";
    for (int i = 0; i < str.size(); ++i)
    {
        if ((str[i] == '.' || str[i] == ',' || str[i] == ';') 
                    && (i + 1 == str.size() || str[i + 1] != ' '))
            str.insert(i + 1, 1, ' ');
    }
    cout << str;
0
igorrr37
1863 / 1481 / 749
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
09.04.2017, 18:00 #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
 
int main() 
{
    std::string str;
    std::getline(std::cin, str);
    std::string punc(",.;");
    for (int i = 0; i < str.size(); ++i)
    {
        if (punc.find(str.at(i)) != std::string::npos && (i == str.size() - 1 || str.at(i + 1) != ' '))
        {
            str.insert(i + 1, 1, ' ');
        }
    }
 
    std::cout << str << "DONE" << std::endl;
    return 0;
}
0
09.04.2017, 18:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 18:00
Привет! Вот еще темы с решениями:

Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а"
Помогите с программой, начал делать, ерунда какая то выходит.......

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. ...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания...


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

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

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