Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
artem0711
17 / 17 / 8
Регистрация: 25.08.2010
Сообщений: 89
Завершенные тесты: 1
#1

Исключить согласные буквы в строке C/C++ - C++

25.04.2011, 07:48. Просмотров 687. Ответов 6
Метки нет (Все метки)

Привет всем!
Помогите решить такую задачку:
Ввести строку с клавиатуры. Переписать данную строку в новую, исключив все согласные буквы английского алфавита.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2011, 07:48     Исключить согласные буквы в строке C/C++
Посмотрите здесь:

C++ Вывести на экран в алфавитном порядке согласные буквы, std::set
C++ Сгруппировать гласные и согласные буквы
C++ Большие согласные буквы сделать маленькими
Подсчитать количество слов содержащие две согласные буквы C++
C++ Напечатать в алфавитном порядке все согласные буквы, входящие в текст.
C++ Узнать, какие согласные буквы не входят в данную строку
Напечатать в алфавитном порядке все согласные буквы, входящие в текст. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9452 / 5465 / 926
Регистрация: 25.07.2009
Сообщений: 10,490
25.04.2011, 10:14     Исключить согласные буквы в строке C/C++ #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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
#define VOWELS "AaEeIiOoUuYy"
#define IS_VOWEL(a) (strchr(VOWELS, (a)))
 
int main(void){
    char buf[BUFSIZ], res[BUFSIZ], * pBuf, * pRes;
    
    while ( printf("String: ") && scanf("%[^\n]%*c", buf) == 1 ){
        for ( pRes = res, pBuf = buf; *pBuf; ++pBuf ){
            if ( isalpha(*pBuf) )
                if ( ! IS_VOWEL(*pBuf) )
                    continue;
            *pRes++ = *pBuf;
        }
        *pRes = 0;
        printf("Result: %s\n", res);
    }
    
    return 0;
}
artem0711
17 / 17 / 8
Регистрация: 25.08.2010
Сообщений: 89
Завершенные тесты: 1
25.04.2011, 10:25  [ТС]     Исключить согласные буквы в строке C/C++ #3
easybudda, спасибо, работает, осталось разобраться что, как и зачем тут выполняется.
easybudda
Эксперт С++
9452 / 5465 / 926
Регистрация: 25.07.2009
Сообщений: 10,490
25.04.2011, 10:30     Исключить согласные буквы в строке C/C++ #4
artem0711, намекну: в цикле две проверки вместо одной потому, что лень было в строку все согласные буквы выписывать - их больше...
artem0711
17 / 17 / 8
Регистрация: 25.08.2010
Сообщений: 89
Завершенные тесты: 1
25.04.2011, 11:20  [ТС]     Исключить согласные буквы в строке C/C++ #5
Да, это заметил.
Пугают меня *pBuf, pRes и еще пара вещей. Но это щас лекцию прочитаю про указатели и думаю раскурю принцип
Dimaskih
4 / 4 / 0
Регистрация: 01.06.2010
Сообщений: 27
25.04.2011, 12:34     Исключить согласные буквы в строке C/C++ #6
Объясните пожалуйста, что значит вот эта конструкция.

for ( pRes = res, pBuf = buf; *pBuf; ++pBuf )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2011, 13:17     Исключить согласные буквы в строке C/C++
Еще ссылки по теме:

C++ Отсортировать текст и вывести только согласные буквы
C++ Напечатать в алфавитном порядке все глухие согласные буквы
Очереди: одна должна содержать гласные буквы, другая - согласные буквы; чтение из файла C++
C++ Определить чередуются ли в строке st гласные и согласные буквы
В самом коротком слове все согласные буквы заменить на букву «A» C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9452 / 5465 / 926
Регистрация: 25.07.2009
Сообщений: 10,490
25.04.2011, 13:17     Исключить согласные буквы в строке C/C++ #7
Цитата Сообщение от Dimaskih Посмотреть сообщение
Объясните пожалуйста, что значит вот эта конструкция.
for ( pRes = res, pBuf = buf; *pBuf; ++pBuf )
1. установить указатель pRes на начало буфера res, указатель pBuf на начало буфера buf
2. проверить, что указатель pBuf не указывает на нулевой символ (строка в С - это последовательность символов завершающаяся нулём)
3. выполнить тело цикла
4. передвинуть указатель pBuf на следующий символ
5. продолжить выполнение со второго пункта.
Yandex
Объявления
25.04.2011, 13:17     Исключить согласные буквы в строке C/C++
Ответ Создать тему
Опции темы

Текущее время: 04:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru