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

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

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

Замена русских символов пробелами - C++

24.01.2014, 05:39. Просмотров 320. Ответов 3
Метки нет (Все метки)

Необходимо написать программу по замене русских символов на пробелы(_)
Моя программа запускается, но почему-то вместо пробелов какие-то непроизносимые символы,
помогите исправить
Буду очень признателен за помощь.

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
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
65
66
67
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <locale.h>
 
using namespace std;
 
 
int length(char* str)
{
    int i = 0;
    while (str[i++] != NULL);
    return --i;
}
 
char* replaceWords(char* str)
{
    char* resultStr = new char[length(str) + 1];
    int i = 0;
    while (str[i])
    {
        if ((str[i] >= 'а' && str[i] <= 'я') || (str[i] >= 'А' && str[i] <= 'Я'))
            resultStr[i] = '_';
        else
            resultStr[i] = str[i];
        i++;
    }
    resultStr[i] = NULL;
    return resultStr;
}
 
void devideString(char* str, char* &first, char* &second)
{
    int i = 0, j = 0, k = 0;
    while (str[i])
    {
        if ((str[i] >= 'а' && str[i] <= 'я') || (str[i] >= 'А' && str[i] <= 'Я'))
        {
            first[j++] = str[i++];
        }
        else if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
        {
            second[k++] = str[i++];
        }
        else
            i++;
    }
    first[j] = NULL; second[k] = NULL;
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
    char* str = new char[255];
    cout << "Введите текст : " << endl;
    cin >> str;
    char* myStr;
    char* first = new char[255];
    
    cout << "First string: " << str << "\n";
    
    myStr = replaceWords(str);
    cout << "\nReplace first: " << myStr << "\n";
    
 
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 05:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена русских символов пробелами (C++):

Написать функцию замены всех русских символов в строке пробелами - C++
Нужно было написать функцию замены всех русских символов в строке пробелами. Написал, но использовал не свою функцию, а стороннюю. Сказали...

Написать функцию замены всех русских символов в строке пробелами - C++
Написать функцию замены всех русских символов в строке пробелами. Ввести и обработать две смешанные строки. Буду признателен за помощь.

Вводится последовательность символов. Признак конца ввода – точка. Посчитать количество символов не являющихся пробелами - C++
Порядок выполнения работы 1.Изучите теоретическое обоснование и проанализируйте приведенные выше примеры программ с циклами типа for,...

Как настроить ввод русских символов и в дальнейшем вывод этих символов - C++
Подскажите как в этом коде настроить ввод русских символов и в дальнейшем вывод этих символов. Данный код выводит лишь всякую ерунду место...

Замена подстроки в строке (с пробелами) - C++
вопрос: ввожу все строки и подстроки через gets, но когда начинается замена, пробелы не видит и удаляет по одному символу до пробела? как...

Замена во введенном предложении запятых пробелами - C++
Народ помогите пожалуйста!Я совсем не шарю в языке с!Надо программу написать - Замена во введенном предложении запятых пробелами!Т.е. пишим...

3
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
24.01.2014, 07:48 #2
а так? (только для прописных)
C++
1
        if ( ( ( c >= -96) && ( c <= -17) ) || ( ( c >= 'А') && ( c <= 'Я') ))
1
Maxachev
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 11
24.01.2014, 08:17  [ТС] #3
Цитата Сообщение от AntonChik Посмотреть сообщение
а так? (только для прописных)
C++
1
        if ( ( ( c >= -96) && ( c <= -17) ) || ( ( c >= 'А') && ( c <= 'Я') ))
Да, так лучше, спасибо!
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,186
24.01.2014, 08:32 #4
Цитата Сообщение от Maxachev Посмотреть сообщение
char* replaceWords(char* str)
сделай unsigned char
все дело в том что у русских букв установлен старший бит что при знаковом представлении является признаком отрицательности соответственно все сравнения не работают
а при беззнаковом сработают

Добавлено через 2 минуты
а если нужно отсечь все кроме латинского алфавита
то
можно так
C++
1
2
if (str[i]&0x80)
 resultStr[i] = '_';
Добавлено через 3 минуты
Цитата Сообщение от Maxachev Посмотреть сообщение
if ((str[i] >= 'а' && str[i] <= 'я') || (str[i] >= 'А' && str[i] <= 'Я'))
самое смешное что эта конструкция может сработать
все дело в настройках компилятора
чем считать char по умолчанию signed char или unsigned char
2
24.01.2014, 08:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 08:32
Привет! Вот еще темы с ответами:

группы символов, разделенные пробелами - C++
Помогите написать программу ничего не получается уже сижу 2 дня и не в какую. За ранее спасибо)) группы символов, разделенные...

Считывание массива символов с пробелами - C++
Доброго времени суток, коллеги! Есть задача считать из файла в поле структуры фамилию и инициалы,между ними стоят пробелы, следующею...

Сравнение русских символов. - C++
Проблема с русскими символами. Русские символы заносятся в массив занимая две ячейки( 2 байта ). Думаю это связано с UTF-8 кодировкой. ...

Ввод русских символов. - C++
Здравствуйте, простите пожалуйста что отвлекаю, я хотел бы спросить как сделать так, что бы русские символы можно было вводить? Я вот...


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

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

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