Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AZIZBEK
0 / 0 / 0
Регистрация: 16.06.2012
Сообщений: 37
#1

Вывести на экран все символы строки кроме букв - C++

19.07.2012, 10:01. Просмотров 1076. Ответов 11
Метки нет (Все метки)

дана строка
вывести на экран символы кроме букв
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2012, 10:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести на экран все символы строки кроме букв (C++):

Удалить из строки все символы кроме букв и цифр; заменить цифры на '**' - C++
ввести рядок , удалить в нем все символы кроме букв и цифр, заменить цифры на '**' вивести на екран рядок . через if сравнил масив с...

Необходимо вывести на экран все различные символы строки - C++
Помогите, пожалуйста! Написать программу, которая читает с клавиатуры строку символов. Необходимо вывести на экран все различные символы...

Строки. Вывести на экран все символы, расположенные внутри скобок - C++
Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри...

Удалить со строки все указание символы кроме первого - C++
Дана строка ("This,code,are,working, "), вопрос в том как удалить все комы кроме первой??

Из строки удалить все символы, кроме пробелов, не являющиеся буквами английского алфавита - C++
Разработать консольное приложение. 1. Во введенной строке после k-го символа вставить заданную подстроку. Подстроку ввести с клавиатуры....

Вывести на экран в первой строке нечетные символы, во второй четные символы исходной строки - C++
Помогите написать 3 программы. (на С или С++) 1. Вывести на экран в первой строке нечетные символы, во второй четные символы исходной...

11
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
19.07.2012, 10:20 #2
Вот так можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
#include <cctype>
using namespace std; 
int main() 
{
    char str[] = "sfdasfas 123 &&&& 1!!!!! CCCAsfasd";  
    int i; 
    for ( i = 0; i < strlen(str); i++) 
    { 
        if(isalpha(str[i])) 
            continue;
        else 
            cout << str[i]; 
    }
 
}
1
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
19.07.2012, 12:02 #3
Цитата Сообщение от David Sylva Посмотреть сообщение
for ( i = 0; i < strlen(str); i++)
C++
1
for(i = 0; str[i] != '\0'; i++)
Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
#include <cctype>
 
int main()
{
    using namespace std;
 
    string str;
    cout << "input string: ";
    getline(cin, str);
 
    copy_if(str.begin(), str.end(),
            ostream_iterator<char>(cout, " "),
            [] (char ch) { return !isalpha(ch); });
 
    cout << endl;
}
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.07.2012, 12:03 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
#include <iterator>
#include <functional>
 
int main()
{
    using namespace std::placeholders;
 
    std::string str("123asd456");
    std::copy_if
    (
        str.begin(),
        str.end(),std::ostream_iterator<char>(std::cout),
        std::bind(std::logical_not<bool>(), std::bind(isalpha, _1))
    );
    std::cout << std::endl;
    return 0;
}
0
modwind
52 / 52 / 1
Регистрация: 09.03.2012
Сообщений: 101
19.07.2012, 12:05 #5
rangerx, тогда лучше
C++
1
2
3
4
5
6
    for (char* s = str; *s; s++) 
    { 
        if(isalpha(*s)) 
            continue;
        putchar(*s);
    }
Добавлено через 1 минуту
soon, из пушки по воробьям.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.07.2012, 12:16 #6
Цитата Сообщение от modwind Посмотреть сообщение
C++
1
2
3
if(isalpha(*s)) 
    continue;
putchar(*s);
modwind, тогда уж лучше
C++
1
2
if(!isalpha(*s))
    std::cout << *s;
Цитата Сообщение от modwind Посмотреть сообщение
soon, из пушки по воробьям
А чего ей без дела лежать?
0
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
19.07.2012, 12:21 #7
modwind, между этими двумя вариантами нет разницы, по сути это одно и тоже.
0
modwind
52 / 52 / 1
Регистрация: 09.03.2012
Сообщений: 101
19.07.2012, 12:26 #8
modwind, тогда уж лучше
Дело вкуса. Мой код идеологически подчёркивает, что некоторые символы пропускаются, а твой - что некоторые выводятся.
А чего ей без дела лежать?
А долго такую программу писать и искать в ней ошибки. И человек, создавший тему начинающий. Как ему понять bind-ы?

Добавлено через 2 минуты
rangerx, по сути да. Просто переменная i как индекс выглядит искусственно, если она реально не используется. Сам указатель на строку можно использовать как итератор.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.07.2012, 12:31 #9
Цитата Сообщение от modwind Посмотреть сообщение
А долго такую программу писать и искать в ней ошибки.
Нет
Цитата Сообщение от modwind Посмотреть сообщение
Как ему понять bind-ы?
Я сомневаюсь, что он будет вникать хотя бы в один из предложенных кодов.
0
modwind
52 / 52 / 1
Регистрация: 09.03.2012
Сообщений: 101
19.07.2012, 12:41 #10
C++
1
Я сомневаюсь, что он будет вникать хотя бы в один из предложенных кодов.
Тогда для кого ты написал свой вариант решения задачи? Просто чтобы показать собственную крутость, с использованием всех возможных наворотов языка C++?

Пусть не автор вникнет, так кто-нибудь другой... если здесь не удаляют старые сообщения форума.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.07.2012, 12:57 #11
Цитата Сообщение от modwind Посмотреть сообщение
Тогда для кого ты написал свой вариант решения задачи?
Для себя. Если в моем коде есть неточность, то, возможно, мне на нее укажут.
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
19.07.2012, 15:47 #12
Очередной хеловорлд-конкурс
В одну строчку вся возня:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cctype>
 
const int STR_SIZE(256);
 
int main(){
    char str[STR_SIZE];
    
    using namespace std;
    while ( cout << "\nString: " && cin.getline(str, STR_SIZE) && *str )
        for ( char * p = str; *p && ( isalpha(*p) || cout << *p ); ++p )
            ;
    
    return 0;
}
1
19.07.2012, 15:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2012, 15:47
Привет! Вот еще темы с ответами:

Дан массив целых чисел с 0 ,вывести на экран все числа кроме 0 - C++
Дан массив целых чисел с 0 ,вывести на экран все числа кроме 0

Удалить все теги , кроме тега <a .>.</a> со страницы html. Результат вывести на экран - C++
Здравствуйте , мне нужно выполнить следующее задание : Дан текст HTML-страницы (скачать по ссылке http://its.alnam.ru/kurs_11.txt). ...

Удалить из введенной строки все символы, отличные от прописных латинских букв и пробелов - C++
Цель работы Научиться работать со строками. Освоить способ динамического захвата и освобождения памяти под символьные массивы....

Строки. Подсчитать количество заглавных букв в тексте; вывести на экран слова, имеющие наименьшее количество букв... (подправить) - C++
Дано задачу: С клавиатуры вводится строка. Составить программу, которая подсчитывает количество заглавных букв в тексте; выводит на...


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

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

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