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

Фильтр (ispunct) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Доступ к элементу структуры http://www.cyberforum.ru/cpp-beginners/thread699659.html
Есть вот такая структура struct A{ char s; int g; char m; }*ptr; Как через *ptr иметь доступ к этим объектов char s; int g; char m;
C++ Случайные числа! random() Доброго время суток! У меня возник вопрос, как сделать рандом от -0,3 до 0,3! Из за того, что ничего нормального не нашел, делал так: int i=rand()%7; // от 0 до 6 if (i<4) x=i/10; //если i=(1) (2) или (3), то x будет 0,1 0,2 0,3 else x=-(0,7-i/10); //если i=(4) (5) или (6), то x будет (-0,3) -0,2 (-0,1) http://www.cyberforum.ru/cpp-beginners/thread699653.html
Найти количество элементов массива C++
Найти количество элементов массива (a1,a2,a3,...,an), удовлетворяющих условиям b<a<c.
C++ Графическое меню в DOS
Возникают ошибки: //Основная программа void main () { int nom=0; int i; char ch; menu m; met: do {
C++ Формула Симпсона http://www.cyberforum.ru/cpp-beginners/thread699637.html
Помогите решить 2 задачки.. Зараннее спасибо.
C++ Вычислить сумму от 1 до m раз Привет! Не могу понять как написать, то ли я где-то со знаками туплю, то ли формула не корректна. Задание: http://www.cyberforum.ru/attachment.php?attachmentid=201677&stc=1&d=1353076200 подробнее

Показать сообщение отдельно
SAUtrade
13 / 13 / 1
Регистрация: 21.10.2012
Сообщений: 140

Фильтр (ispunct) - C++

16.11.2012, 21:53. Просмотров 666. Ответов 0
Метки (Все метки)

C++ (Qt)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream> 
#include <string.h> 
#include <stdio.h>
 
using namespace std; 
 
const int MAXLEN = 256;
 
void filt(char *string, int key)
{
    int i, j;
 
    for (i = 0; i < strlen(string); i++)
    {
        switch(key)
        {
            case 1:
                if ((string[i] >= 65 && string[i] <= 90) || (string[i] >= 100 && string[i] <= 122))
                    cout << " ";
                else 
                    cout << string[i];
                break;
            case 2:
                if (string[i] >= 128 && string[i] <= 175)
                    cout << " ";
                else
                    cout << string[i];
                break;
            case 3:
                if (ispunct (*string)) // вопрос по этой функции
                    cout << " ";
                else
                    cout << string[i];
                break;
            case 4:
                if (string[i] >= 48 && string[i] <= 57)
                    cout << " ";
                else
                    cout << string[i];
                break;
        }
 
        
    }
}
 
 
int main() 
{ 
    setlocale (LC_ALL, "RUS");
    char string[MAXLEN]; 
    int min, max;
    int key;
    int flag;
    
    cout << "Введите текст: ";
    gets(string);
 
    cout << endl << "Выберите фильтр" << endl << "1. Символы латинского алфавита" << endl << "2. Символы кириллицы" << endl << "3. Смволы пунктуаци" << endl << "4. Цифры" << endl << ">>> ";
    cin >> key;
    filt(string, key);
}
прога хорошо работает с латиницей и цифрами... Нашел заметку про функцию ispunct - которая если я правильно понял должна фильтровать пунктуацию... Но когда ввожу строку без пунктуации и выбираю фильтр пунктуация -- выбивает ошибку... А когда строка содершит пунктуационные знаки чистит всю строку... Может я не правильно использую данную функцию?

Добавлено через 2 часа 36 минут
Пока отставлю в сторону эту функцию)) напишу по другому))
C++ (Qt)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream> 
#include <string.h> 
#include <stdio.h>
 
using namespace std; 
 
const int MAXLEN = 256;
 
void filt(char *string, int key)
{
    int i;
 
    for (i = 0; i < strlen(string); i++)
    {
        switch(key)
        {
            case 1:
                if ((string[i] >= 65 && string[i] <= 90) || (string[i] >= 100 && string[i] <= 122))
                    cout << " ";
                else 
                    cout << string[i];
                break;
            case 2:
                if (string[i] >= 128 && string[i] <= 175)
                    cout << " ";
                else
                    cout << string[i];
                break;
            case 3:
                if (string[i] == '!' || string[i] == ':' || string[i] == '.' || string[i] == ',' || string[i] == '-' || string[i] ==';' || string[i] =='?')
                    cout << " ";
                else
                    cout << string[i];
                break;
            case 4:
                if (string[i] >= 48 && string[i] <= 57)
                    cout << " ";
                else
                    cout << string[i];
                break;
            case 5:
                exit(0);
        }
    }
}
 
int main() 
{ 
    setlocale (LC_ALL, "RUS");
    char string[MAXLEN]; 
    char newstring[MAXLEN] = {0};
    int key;
 
    cout << "Введите текст: ";
    gets(string);
do
{
    cout << endl << "Выберите фильтр" << endl << "1. Символы латинского алфавита" << endl << "2. Символы кириллицы" << endl << "3. Смволы пунктуаци" << endl << "4. Цифры" << endl <<  "5. Выход" << endl << ">>> ";
    cin >> key;
    filt(string, key);
}
while (key != 5);
}
А как вот сделать чтобы когда я сделал фильтр введенного текста --- можно было бы добавить еще один фильтр?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru