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

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

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

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

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

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

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

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

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

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

10
Peoples
1347 / 836 / 749
Регистрация: 06.02.2016
Сообщений: 2,232
Записей в блоге: 17
Завершенные тесты: 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
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
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
186 / 155 / 136
Регистрация: 24.02.2017
Сообщений: 606
Завершенные тесты: 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
Рука
394 / 363 / 199
Регистрация: 16.08.2014
Сообщений: 1,635
Завершенные тесты: 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
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
07.04.2017, 23:25 6
повар1, твой код выйдет за границу строки, если знак препинания, после которого нужно вставить пробел, будет в конце сроки.
_stanislav, твой код после последней точки не вставляет пробел.
0
_stanislav
Рука
394 / 363 / 199
Регистрация: 16.08.2014
Сообщений: 1,635
Завершенные тесты: 2
07.04.2017, 23:30 7
Цитата Сообщение от nd2 Посмотреть сообщение
твой код после последней точки не вставляет пробел
так и должно быть.
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
07.04.2017, 23:34 8
Цитата Сообщение от _stanislav Посмотреть сообщение
так и должно быть.
Может быть, но не по заданию:
Цитата Сообщение от nvc Посмотреть сообщение
Необходимо после каждого знака препинания (".", ",", ";") вставить в строку пробел, если там его нет.
0
_stanislav
Рука
394 / 363 / 199
Регистрация: 16.08.2014
Сообщений: 1,635
Завершенные тесты: 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
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
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
1867 / 1483 / 751
Регистрация: 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

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

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

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


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

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

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