14 / 14 / 2
Регистрация: 21.10.2012
Сообщений: 140
1

не фильтрует русские буквы

23.11.2012, 21:06. Показов 985. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Такая проблема... Вводится строка, пользоватль выбирает фильтр и вместо букв или цыфр вставляются пробелы... С латиницей, с цыфрами и пунктуацией прога работает отлично, а вот на кирилицу вообще не реагирует(... В чем может быть проблема?

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
64
#include <iostream> 
#include <string.h> 
#include <stdio.h>
#include <Windows.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] >= 97 && string[i] <= 122))
                    cout << " ";
                else 
                    cout << string[i];
                break;
            case 2:
                if (string[i] >= 128 && string[i] <= 175 || (string[i] >= 224 && string[i] <= 239))
                    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() 
{ 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char string[MAXLEN]; 
    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);
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2012, 21:06
Ответы с готовыми решениями:

Русские буквы
Ребят всем привет!!! Подскажите мне пожалуйста такую вещь,хочу в С++ чтобы на русском...

Русские буквы
Суть такая: надо записать в файл название модуля. Для модулей с английским названием и путём до них...

русские буквы
можно ли как-нибудь ввести в консоль русский текст, получить его, а затем работать с ним, а затем...

Русские буквы в С
помогите разобраться с алфавитом в с как сделать что бы когда я ввожу русские буквы то компилятор...

2
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
23.11.2012, 21:14 2
Лучший ответ Сообщение было отмечено SAUtrade как решение

Решение

Цитата Сообщение от SAUtrade Посмотреть сообщение
а вот на кирилицу вообще не реагирует(
какую кирилицу? их 100500 кодировок
посему здесь
Цитата Сообщение от SAUtrade Посмотреть сообщение
string[i] >= 128 && string[i] <= 175 || (string[i] >= 224 && string[i] <= 239))
поменяй волшебные числа на символы

второе все русские символы лежат во второй половине таблице что для char является отрицательным числом соответственно все твои сравнения не действуют
используй беззнаковую
C++
1
void filt(unsigned char *string, int key)
1
14 / 14 / 2
Регистрация: 21.10.2012
Сообщений: 140
23.11.2012, 21:22  [ТС] 3
От я...)) не учел... Спасибо все работает))
0
23.11.2012, 21:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2012, 21:22
Помогаю со студенческими работами здесь

Русские буквы в C++
Помогите исправить, спасибо. Доброго времен суток! Я написал программу с Русскими буквами. ...

Русские буквы
такая ситуация : написал в консоле карточную игру, для обозначения значков мастей нужна строчка...

русские буквы
Всем привет!!! У меня есть один вопрос, может кто-нибудь знает ответ на него. Итак, как известно в...

Префикс L и русские буквы
Простой файл: #include &lt;iostream&gt; #include &lt;locale&gt; using namespace std; int main() { ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru