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

Удалить со строки слова - C++

Восстановить пароль Регистрация
 
Just_2D
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 22
17.03.2013, 11:26     Удалить со строки слова #1
Всем доброго времени суток. Мне нужно удалить со строки все слова которые начинаются на гласную с помощью:
1) Строки как массива символов.
2) Строки как класса string.
Помогите пожалуйста.
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
17.03.2013, 14:13     Удалить со строки слова #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
#include <iostream>
#include <string>
#include <ctype.h>
using namespace std;
 
int main()
{
    char txt[] = "Asddqw ops Dase ddd yds aqwq ubi";
    char glasn[] = "aeiouy";
    
    char * pch = strtok(txt, " ");
    
    while (pch != NULL)
    {
        bool isglasn = false;
        for (int i = 0; i < 6; ++i)
            if (tolower(pch[0]) == glasn[i])
                isglasn = true;
 
        if (!isglasn)
            cout << pch << " ";
        pch = strtok(NULL, " !,.");
    }
    
    cout << endl;
    system("pause");
}



Второй можно сделать точно так же, просто заменив
C++
1
char * pch = strtok(txt, " ");
на
C++
1
2
string txt2 = "Asddqw ops Dase ddd yds aqwq ubi";
char * pch = strtok(const_cast<char*>(txt2.c_str()), " ");
Just_2D
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 22
17.03.2013, 14:36  [ТС]     Удалить со строки слова #3
А вы бы не могли прокоментировать код?
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
17.03.2013, 17:12     Удалить со строки слова #4
Пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
* * char txt[] = "Asddqw ops Dase ddd yds aqwq ubi"; // массив символов
* * char glasn[] = "aeiouy"; // массив букв
char * pch = strtok(txt, " "); // разделение строки на подстроку
while (pch != NULL)
* * {
* * * * bool isglasn = false; // булевая переменная для определения гласной
* * * * for (int i = 0; i < 6; ++i) // цикл по распознанию гласной
* * * * * * if (tolower(pch[0]) == glasn[i]) // если первый символ подстроки - гласная
* * * * * * * * isglasn = true; // присвоить истину
if (!isglasn) // если ложно
* * * * * * cout << pch << " "; // вывести подстроку
* * * * pch = strtok(NULL, " "); // обнулить
* * }
cout << endl;
* * system("pause");
}
Yandex
Объявления
17.03.2013, 17:12     Удалить со строки слова
Ответ Создать тему
Опции темы

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