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

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

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

Студворк — интернет-сервис помощи студентам
2) Удалить все символы, не являющиеся буквами или цифрами; (можете показать на примере как символа "$" как удалять,т.е. только его).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2018, 00:05
Ответы с готовыми решениями:

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

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

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

1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
17.09.2018, 23:52
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2018, 23:52
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru