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

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

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

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

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

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

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

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел - C++
Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел (т. е. следует любой символ, кроме...

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

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

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

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

Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а" - C++
Помогите с программой, начал делать, ерунда какая то выходит.... #include<iostream.h> #include<stdlib.h> #include<conio.h> ...

10
Peoples
1172 / 677 / 426
Регистрация: 06.02.2016
Сообщений: 1,781
Записей в блоге: 13
Завершенные тесты: 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
2383 / 1972 / 691
Регистрация: 29.01.2016
Сообщений: 6,421
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
102 / 80 / 30
Регистрация: 24.02.2017
Сообщений: 327
Завершенные тесты: 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
Рука
36 / 88 / 29
Регистрация: 16.08.2014
Сообщений: 543
Завершенные тесты: 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
2383 / 1972 / 691
Регистрация: 29.01.2016
Сообщений: 6,421
07.04.2017, 23:25 #6
повар1, твой код выйдет за границу строки, если знак препинания, после которого нужно вставить пробел, будет в конце сроки.
_stanislav, твой код после последней точки не вставляет пробел.
0
_stanislav
Рука
36 / 88 / 29
Регистрация: 16.08.2014
Сообщений: 543
Завершенные тесты: 2
07.04.2017, 23:30 #7
Цитата Сообщение от nd2 Посмотреть сообщение
твой код после последней точки не вставляет пробел
так и должно быть.
0
nd2
2383 / 1972 / 691
Регистрация: 29.01.2016
Сообщений: 6,421
07.04.2017, 23:34 #8
Цитата Сообщение от _stanislav Посмотреть сообщение
так и должно быть.
Может быть, но не по заданию:
Цитата Сообщение от nvc Посмотреть сообщение
Необходимо после каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет.
0
_stanislav
Рука
36 / 88 / 29
Регистрация: 16.08.2014
Сообщений: 543
Завершенные тесты: 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
2383 / 1972 / 691
Регистрация: 29.01.2016
Сообщений: 6,421
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
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
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
Привет! Вот еще темы с ответами:

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

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

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...


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

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

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