Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 1
Регистрация: 16.05.2018
Сообщений: 22
1

Удалить все символы, не являющиеся буквами или цифрами

10.06.2018, 00:05. Показов 3228. Ответов 1
Метки нет (Все метки)

2) Удалить все символы, не являющиеся буквами или цифрами; (можете показать на примере как символа "$" как удалять,т.е. только его).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2018, 00:05
Ответы с готовыми решениями:

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

В строке удалить все символы не являющиеся буквами или цифрами
Помогите написать одно ( или два ) задания : 1)В строке удалить все символы не являющиеся буквами...

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

Создать очередь, содержащую любые символы. Удалить из очереди все символы, не являющиеся буквами или цифрами
Используя динамические структуры, реализовать следующие задания. Вспомо*гательные функции должны...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
1
1472 / 936 / 809
Регистрация: 30.04.2016
Сообщений: 3,253
17.09.2018, 23:52 2
artem1artem, здравствуйте! Решил ответить на ваш вопрос не совсем обычным образом. Я потратил два часа на ответ, стараясь сделать его как можно более всеобъемлющим. Символы строки являющиеся буквами всегда латинские, но это можно поправить. Надеюсь, вам и кому-то еще будет интересно. Здесь накопленный мной опыт и комментарии:

Вариант 1:

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
/*
Дата и время написания программы:
 
17.09.2018
20:24
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем переменную строкового типа.
2. Вводим строку.
3. Пробегаем по строке (справа налево).
4. С помощью функции isalnum() проверяем, что символ неявляется буквой или цифрой.
5. Удаляем соответствующие символы с помощью функци erase().
6. Выводим получившуюся строку.
 
Решение:
*/
 
#include <iostream>
#include <string>
#include <cctype>
 
    using namespace std; //Пространство имен
 
int main() {
    string s; //Объявляем переменную строкового типа (исходная строка)
    cout << "Enter a string:\n";
    getline(cin, s); //Вводим строку с клавиатуры
    for (int i = s.length() - 1; i >= 0; i--) { //Пробегаем по строке циклом (справа налево, чтобы не нарушить индексацию при удалении)
        if (!isalnum(s[i])) { //Условие, что символ не является буквой или цифрой
            s.erase(i, 1); //Удаляем символы, не являющиеся буквой или цифрой
        }
    }
    cout << "Output of the program: " << s << "\n";
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Вариант 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
37
38
39
40
41
42
43
/*
Дата и время написания программы:
 
17.09.2018
20:35
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем символьную строку (массив типа char).
2. Объявляем пустую строку типа string (хранит искомый результат).
3. Вводим строку с консоль.
4. Пробегаем по строке циклом (слева направо) и накапливаем результат в новой строке (имитация удаления).
5. Выводим искомый результат (строку после удаления) на экран.
 
Решение:
*/
 
#include <iostream>
#include <cstring>
 
    using namespace std; //Пространство имен
 
int main() {
    char s[255]; //Объявляем сивольную строку (массив типа char)
    string str = ""; //Объявляем пустую строку (накапливает только буквы и цифры)
    cout << "Enter a string:\n";
    cin.getline(s, 255); //Вводим строку с клавиатуры
    //gets(s); //Ввод строки можно также осуществить с помощью функции gets()
    for (int i = 0; i < strlen(s); i++) { //Пробегаем по строке циклом (слева направо)
        if ((s[i] >= '0' && s[i] <= '9') ||
            (s[i] >= 'a' && s[i] <= 'z') ||
            (s[i] >= 'A' && s[i] <= 'Z')) { //Если символ латинская буква или цифра
                str += s[i]; //Записываем в новую строку символы, являющиеся буквами или цифрами    
            } 
    }
    cout << "Output of the program: " << str << "\n"; //Выводим результат (строку после удаления) в консоль
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Вариант 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
Дата и время написания программы:
 
17.09.2018
20:50
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем переменную строкового типа.
2. Вводим строку.
3. Пробегаем по строке (слева направо).
4. С помощью функции isalnum() проверяем, что символ неявляется буквой или цифрой.
5. Удаляем соответствующие символы с помощью функци erase().
6. Сдигаем индекс на единицу (так как удаление производилось при проходе слева направо).
7. Выводим получившуюся строку.
 
Решение:
*/
 
#include <iostream>
#include <string>
#include <cctype>
 
    using namespace std; //Пространство имен
 
int main() {
    string s; //Объявляем переменную строкового типа (исходная строка)
    cout << "Enter a string:\n";
    getline(cin, s); //Вводим строку с клавиатуры
    for (int i = 0; s[i] != '\0'; i++) { //Пробегаем по строке циклом (слева направо)
        if (!isalnum(s[i])) { //Условие, что символ не является буквой или цифрой
            s.erase(i, 1); //Удаляем найденный символ
            i--; //Сдвигаем индекс после удаления
        }
    }
    cout << "Output of the program: " << s << "\n"; //Выводим результат (строку после удаления) в консоль
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Вариант 4:

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
/*
Дата и время написания программы:
 
17.09.2018
21:10
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем переменную строкового типа.
2. Формируем паттерн удаления (с помощью регулярных выражений).
3. Вводим строку.
4. Удаляем нужные символы с помощью функции regex_replace().
5. Выводим получившуюся строку.
 
Решение:
*/
 
#include <iostream>
#include <string>
#include <regex>
#include <cctype>
 
    using namespace std; //Пространство имен
 
int main() {
    string s; //Объявляем переменную строкового типа (исходная строка)
    regex e("[^A-Za-z0-9]+"); //Определяем в регулярном выражении символы, неявляющиеся буквами или цифрами
    cout << "Enter a string:\n";
    getline(cin, s); //Вводим строку с клавиатуры
    s = regex_replace(s, regex(e), ""); //Удаляем символы (заменяем на пустые) с помощью функции regex_replace()
    cout << "Output of the program: " << s << "\n"; //Выводим результат (строку после удаления) в консоль
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Вариант 5:

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
/*
Дата и время написания программы:
 
17.09.2018
21:21
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем переменную строкового типа.
2. Вводим исходную строку.
3. Удаляем нужные символы с помощью итераторов, лямбда-выражений, функций remove_if() и erase().
4. Выводим получившуюся строку.
 
Решение:
*/
 
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <cctype>
 
    using namespace std; //Пространство имен
 
int main() {
    string s; //Объявляем переменную строкового типа (исходная строка)
    cout << "Enter a string:\n";
    getline(cin, s); //Вводим строку с клавиатуры
    auto it = remove_if(s.begin(), s.end(), [&](char ch) { return !isalnum(ch); }); //Нужна поддержка стандарта С++11
    s.erase(it, s.end()); //Удаляем символы, не являющиеся буквами или цифрами
    cout << "Output of the program: " << s << "\n"; //Выводим результат (строку после удаления) в консоль
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Вариант 6:

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
/*
Дата и время написания программы:
 
17.09.2018
21:30
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем переменную строкового типа.
2. Вводим исходную строку.
3. Удаляем символы, не являющиеся буквами или цифрами с помощью идиомы erase-remove и вспомогательной функции f().
4. Выводим получившуюся строку.
 
Решение:
*/
 
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
 
    using namespace std; //Пространство имен
    
bool f(char ch) { //Функция проверки является ли заданный символ буквой иил цифрой
    return !isalnum(ch);
}
 
int main() {
    string s; //Объявляем переменную строкового типа (исходная строка)
    cout << "Enter a string:\n";
    getline(cin, s); //Вводим строку с клавиатуры
    s.erase(remove_if(s.begin(), s.end(), f), s.end()); //Удаляем символы, не являющиеся буквами или цифрами
    cout << "Output of the program: " << s << "\n"; //Выводим результат (строку после удаления) в консоль
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Вариант 7:

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
/*
Дата и время написания программы:
 
17.09.2018
21:40
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем переменную строкового типа.
2. Вводим исходную строку.
3. Копируем символы, не являющиеся буквами или цифрами с помощью функции copy_if().
4. Выводим получившуюся строку.
 
Решение:
*/
 
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
 
    using namespace std; //Пространство имен
 
int main() {
    string s; //Объявляем переменную строкового типа (исходная строка)
    char res[255];
    cout << "Enter a string:\n";
    getline(cin, s); //Вводим строку с клавиатуры
    copy_if(s.begin(), s.end(), res, [&](char ch) { return isalnum(ch); }); //Копируем символы, не являющиеся буквами или цифрами
    cout << "Output of the program: " << res << "\n"; //Выводим результат (строку после удаления) в консоль
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Вариант 8:

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
/*
Дата и время написания программы:
 
17.09.2018
22:00
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем символьную строку (массив типа char).
2. Объявляем два указателя на исходную строку.
3. Пробегаем указателем p по строке и накапливаем новую строку в указателе q (соблюдая условия задачи)
4. Выводим результат на экран.
 
Решение:
*/
 
#include <iostream>
#include <cstring>
#include <cctype>
 
    using namespace std; //Пространство имен
 
int main() {
    char s[255]; //Объявляем сивольную строку (массив типа char)
    cout << "Enter a string:\n";
    gets(s); //Вводим строку с клавиатуры 
    //cin.getline(s, 255); //Ввод строки можно также осуществить с помощью функции getline()
    char *p = s, *q = s;
    while (*p) { //Пробегаем указателем по строке
    if (isalnum(*p)) { //Если символ является буквой или цифрой
        *q++ = *p; //Накапливаем строку в новом указателе
    }
    ++p;
    }
    *q = '\0'; //Завершение новой строки нуль-терминатором (строка оканчивается символом '\0')
    cout << "Output of the program: " << s << "\n"; //Выводим результат (строку после удаления) в консоль
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Вариант 9:

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
/*
Дата и время написания программы:
 
17.09.2018
22:30
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Вводим исходную строку.
2. Пробегаем циклом по строке (справа налево)
3. Удаляем символы с помощью определенной функции (сдвиг элементов массива)
4. Выводим получившуюся строку.
 
Решение:
*/
 
#include <iostream>
#include <string>
#include <cctype>   
 
    using namespace std;
    
void del(string &s, int index, int size) { //Функция удаления элемента по заданному индексу
    for (int i = index; i < size - 1; i++) {
        s[i] = s[i+1]; //Сдвигаем элементы
    }
    s[size-1] = '\0';
}
     
int main() { 
    int len; //Объявляем целочисленную переменную (хранит длину исходной строки)
    string s; //Объявляем строку
    cout << "Enter a string:\n";
    getline(cin, s); //Вводим строку с клавиатуры 
    len = s.length(); //Определяем длину строки
    for (int i = len - 1; i >= 0; i--) { //Пробегаем циклом по строке (справа налево, чтобы не учитывать индекс при удалении)
        if (!isalnum(s[i])) { //Если символ не является буквой или цифрой
            del(s, i, len); //Удаляем символ с помощью сдвига
        }
    }
    cout << "Output of the program: " << s << "\n"; //Выводим результат (строку после удаления) в консоль
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
Добавлено через 38 минут
Вариант 10:

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
/*
Дата и время написания программы:
 
17.09.2018
23:08
 
Условие задачи:
 
Удалить из строки все символы, не являющиеся буквами или цифрами.
 
Алгоритм:
 
1. Объявляем переменную строкового типа.
2. Вводим строку.
3. Пробегаем циклом по строке (слева направо).
4. Пропускаем удаляемые символы с помощью continue, а оставшиеся - выводим.
 
Решение:
*/
 
#include <iostream>
#include <string>
#include <cctype>
 
    using namespace std; //Пространство имен
 
int main() {
    string s; //Объявляем переменную строкового типа (исходная строка)
    cout << "Enter a string:\n";
    getline(cin, s); //Вводим строку с клавиатуры
    cout << "Output of the program:\n";
    for (int i = 0; i < s.length(); i++) { //Пробегаем по строке циклом (слева направо)
        if (!isalnum(s[i])) { //Если символ не является буквой или цифрой
            continue; //Пропускаем символ
        } else {
            cout << s[i]; //Выводим искомую строку на экран
        }
    }
    cout << "\n";
    system("pause"); //Функция задержки экрана консоли
    return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2018, 23:52

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

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

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

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

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

Написать функцию, которая удаляет из строки символы, не являющиеся буквами или цифрами
Написать функцию, которая удаляет из строки символы, не являющиеся буквами или цифрами


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

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

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