3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
1

В тексте заменить все символы, не являющиеся буквами, знаком нижнее подчеркивание

16.12.2016, 10:54. Показов 2381. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Предусмотрите ввод с клавиатуры произвольной строки символов. На экран вывести введенную строку и результат ее обработки. В тексте заменить все символы, не являющиеся буквами, знаком нижнее подчеркивание. Подсчитать, сколько замен было выполнено.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2016, 10:54
Ответы с готовыми решениями:

Заменить все символы, не являющиеся буквами или цифрами на апострофы
Дан текст. Преобразовать его, заменив все символы, не являющиеся буквами или цифрами на апострофы,...

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

Удалить из строки все символы, не являющиеся буквами, а прописные буквы заменить строчными
Удалить из строки все символы, не являющиеся буквами, а прописные буквы заменить строчными. Всё...

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

7
1494 / 1209 / 821
Регистрация: 29.02.2016
Сообщений: 3,614
16.12.2016, 12:12 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
#include <iostream>
#include <string>
 
using namespace std;
int hd(string s1, string s2) {
    int dif = 0;
    for (unsigned i = 0; i < s1.size(); i++ ) {
        string b1 = s1.substr(i,1);
        string b2 = s2.substr(i,1);
        if (b1 != b2) {
            dif++;
        }
    }  
    return dif;
}
string foo(string in) {
    for (auto & c : in) {
        if (!isalpha(c)) c='_';
    }
    return in;
}
int main()
{
    string s="Hello 1234 World&*";
    string o=foo(s);
    cout<<o<<endl;
    cout<<hd(s,o)<<endl;
    return 0;
}
2
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
16.12.2016, 12:37 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
    string s {"Hello 1234 World&*"};
    int k=0;
    replace_if(s.begin(),s.end(),[&k](char &c) {
        if(!isalpha(c)) {
            k++;
            return true;
        } else return false;
    },'_');
    cout<<s<<endl;
    cout<<k<<endl;
    return 0;
}
2
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
16.12.2016, 12:38 4
Лучший ответ Сообщение было отмечено shaverma как решение

Решение

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
#include <iostream>
#include <algorithm>
#include <string>
 
using namespace std;
 
int main() {
 
    string userString;
 
    cout
        << "Please, enter a some string: ";
    getline(cin, userString);
 
    replace_if(userString.begin(), userString.end(), [](char c) { return !isalpha(c); }, '_');
    unsigned int count = count_if(userString.begin(), userString.end(), [](char c) { return c == '_'; });
 
    cout
        << "Result: "
        << userString
        << ". Count of replaces: "
        << count
        << endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
 
}
2
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.12.2016, 12:45 5
Лучший ответ Сообщение было отмечено shaverma как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <algorithm>
#include <cctype>
#include <iostream>
#include <iterator>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::cout << "Before: " << str << "\nAfter:  ";
    size_t counter = 0;
    std::replace_copy_if(str.begin(), str.end(), std::ostream_iterator<char>(std::cout),
        [&counter](const char c) { return !isalpha(c) && ++counter; }, '_');
    std::cout << "\nCounter: " << counter;
}
3
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
16.12.2016, 12:47 6
MrGluck, так-то я изначально и хотел сделать, но пока что ума на такое не хватает. Спасибо за решение.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.12.2016, 12:56 7
Решение через регулярки, но без вывода количества символов
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iterator>
#include <regex>
#include <string>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::cout << "Before: " << str << "\nAfter:  ";
    std::regex_replace(std::ostreambuf_iterator<char>(std::cout), str.begin(), str.end(), std::regex("[^a-zA-Z]"), "_");
}
Добавлено через 52 секунды
Цитата Сообщение от Nishen Посмотреть сообщение
Спасибо за решение.
Рад стараться. Такая благодарность даже важнее, чем помощь ТС.
3
3 / 2 / 4
Регистрация: 05.12.2016
Сообщений: 95
19.12.2016, 18:11  [ТС] 8
MrGluck, большое спасибо! Честно говоря, у меня только ваша программа работает без ошибок
0
19.12.2016, 18:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2016, 18:11
Помогаю со студенческими работами здесь

Удалить все символы, не являющиеся буквами или цифрами и заменить большую малой
Дана последовательность символов, количество букв &lt;=255 удлить все символы не являющиеся буквами...

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

Удалить в строке все символы являющиеся буквами или цифрами, и заменить каждую большую букву одноименной малой
условие : Даны символы S1,...Sn. Известно, что символ S1 отличен от пробела и что среди S1,...

Дано предложение. Все пробелы в нем заменить на нижнее подчеркивание
Дано предложение. Все пробелы в нем заменить на символ «_».


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

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

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