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

Работа с текстом

09.06.2016, 00:39. Просмотров 465. Ответов 2
Метки нет (Все метки)

Помогите, пожалуйста, исправить программу... Задание такое: Задан текст. По правилам пунктуации пробел может стоять после, а не перед каждым из следующих знаков: . , ; : ! ?. Проверить данный текст на соблюдение этих правил и при необходимости исправить.

Т.е. нужно:
1) оставить пробел между словами в предложении
2) если пробел стоит перед знаками . , ; : ! ? - удалить его
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
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include <iostream>
#include <string>
 
using namespace std;
 
string posle(".,;:!?)]}"); //по условию ЭТО после 
string pered = ("([{"); // ЭТО перед 
string probel = ("/s"); //пробел, табуляция, перевод строки 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    string st = "Hbg vjg dh.Sljh fhg:   hedgv b.  Ffjns shja.";
    cout << endl << "Текст: " << st << endl;
    cout << endl << "Проверка текста на соблюдение пунктационных правил... "  << endl;
    for (int i = st.length() - 2; i > 0; --i)
        if (st[i] == ' ' && (pered.find(st[i - 1] != string::npos) || posle.find(st[i + 1] != string::npos)))
            st.erase(i, 1);
    cout << endl << "Исправленный текст: " << st << endl;
    getchar();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2016, 00:39
Ответы с готовыми решениями:

Работа с текстом
Задача C++: Даны натуральное число n, символы s1 ...,sn.. Группы символов,...

Массив. Работа с текстом.
В общем, задание такого: пользователь вводит Ф.И.О (неважно чьё) и программа...

Работа с текстом (цвет)
Всем привет! Подскажите пожалуйста как поменять цвет фона в консоли, чтобы...

Файлы, работа с текстом
Огромная просьба помочь!! Мне очень нужно написать программу, которая будет...

С++ работа с текстом из файла
Народ помогите плиз !!! Надо прочитать текст из файла , для дальнейшей работы с...

2
Геомеханик
785 / 592 / 937
Регистрация: 26.06.2015
Сообщений: 1,409
09.06.2016, 02:55 #2
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
#include <iostream>
#include <string>
#include <cctype>
 
void space_format(std::string& s){
    std::string::size_type i;
    const std::string ds(".,;:!?");
 
    //удаление перед
    for(i = 1; i < s.length(); ){
        if((ds.find(s[i]) != std::string::npos) && isspace(s[i - 1])){
            if(i > 0){
                s.erase(--i, 1);
                continue;
            }
        }
        ++i;
    }
 
    //добавление после
    for(i = 0; i < (s.length() - 1); ++i){
        if((ds.find(s[i]) != std::string::npos) && !isspace(s[i + 1])){
            if(ds.find(s[i + 1]) == std::string::npos){
                ++i;
                s.insert(s.begin() + i, ' ');
            }
        }
    }
}
 
int main(void){
    std::string s = "A,B,C,D   .Bla-bla ,ok ! !   !\nZed ,zoo. Aaaa    ?Abcdef.";
    space_format(s);
    std::cout << s << std::endl;
    return 0;
}
1
Novichok2016
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 26
09.06.2016, 16:04  [ТС] #3
Большое спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2016, 16:04

Файлы, меню, работа с текстом
Добрый вечер, помогите пожалуйста найти ошибку в алгоритме, написал программу в...

Работа с текстом без String
Слова текста из малых латинских букв записаны не менее чем через один пробел;...

Работа с русским текстом в linux
Пишу консольное приложение в Code::Blocks на Ubuntu 15.04. Выводит он русский...


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

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

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