Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.12.2017
Сообщений: 27
1

Заменить последовательность подряд идущих пробелов одним пробелом

29.12.2017, 13:26. Показов 1814. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составьте программу, переписывающую текстовый файл с заменой каждой последовательности подряд идущих пробелов одним пробелом и удалением всех пробелов, непосредственно предшествующих символам конца строки и конца файла. Имена файла-источника и файла-получателя выбирает пользователь.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2017, 13:26
Ответы с готовыми решениями:

В текстовом файле заменить все последовательности идущих подряд пробелов одним пробелом
В текстовом файле заменить все последовательности идущих подряд пробелов одним пробелом, т.е....

Заменить несколько подряд идущих пробелов одним
нужна программа какая заменяет несколько подряд идущих пробелов одним и выводит полученный...

Заменить несколько подряд идущих пробелов одним
Напишите программу, которая посимвольно читает из std::cin, пока не достигнет конца потока ввода, и...

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом)
Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все...

2
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
29.12.2017, 17:49 2
Лучший ответ Сообщение было отмечено Smilelan как решение

Решение

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
#include <iostream>
#include <fstream>
#include <string>
void trim_rep_spaces(std::string::size_type& p, std::string& s);
void output_trim(std::ostream& _out, std::istream& _in);
 
int main(void){
    std::string s_in, s_out;
 
    std::cout << "src file: ";
    std::getline(std::cin, s_in);
    std::cin.sync();
 
    std::cout << "dst file: ";
    std::getline(std::cin, s_out);
    std::cin.sync();
 
    std::ifstream fin(s_in.c_str());
    if(!fin.is_open())
        return 1;
 
    std::ofstream fout(s_out.c_str());
    if(!fout.is_open()){
        fin.close();
        return 1;
    }
    output_trim(fout, fin);
    fout.close();
    fin.close();
    return 0;
}
 
void output_trim(std::ostream& _out, std::istream& _in){
    std::string s;
    std::string::size_type p = std::string::npos;
    while(std::getline(_in, s)){
        if(p != std::string::npos)
            _out << std::endl;
 
        trim_rep_spaces(p, s);
        if(p > 0)
            _out.write(&s[0], p);
    }
 
    if(!_out.fail())
        _out.flush();
}
 
void trim_rep_spaces(std::string::size_type& p, std::string& s){
    std::string::size_type k, j = 0, i = 0, n = s.length();
    while((i < n) && (s[i] == ' '))
        ++i;
 
    for(; i < n; ){
        if(s[i] != ' ')
            s[j++] = s[i++];
        else {
            k = i + 1;
            while((k < n) && (s[k] == ' '))
                ++k;
 
            s[j++] = s[i];
            i = k;
        }
    }
 
    while((j > 0) && (s[j - 1] == ' '))
        --j;
 
    if((n > 0 && !j) && (s[j] == ' '))
        p = 0;
    else
        p = j;
}
0
0 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 17
03.06.2018, 22:57 3
Геомеханик, не могли бы вы переделать этот код так, чтобы я мог задать файл в самой программе в формате file.txt?
0
03.06.2018, 22:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2018, 22:57
Помогаю со студенческими работами здесь

Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом
Задана строка символов. Преобразовать эту строку следующим образом: удалить группы пробелов,...

Заменить каждую группу внутренних пробелов одним пробелом
Дана строка слов, разделенных пробелами. Сформируйте но- вую строку, заменив каждую группу...

Удалить в строке все лишние пробелы, то есть серии подряд идущих пробелов заменить на одиночные пробелы
Я уже решал эту задачу с помощью циклов и символьных массивов, и выкладывал на этот форум , но я не...

О передаче массива в функцию, которая заменяет серию пробелов одним пробелом
Нужно написать функцию, чтоб она получала символьный массив L, и возвращала массив Lsource в...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru