1 / 2 / 0
Регистрация: 15.11.2017
Сообщений: 36
1

Изменить регистр введенных букв

14.12.2017, 13:19. Показов 8570. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал программу, которая меняет регистр введенных букв. С английскими работает, а с русскими нет, почему?

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
#include "StdAfx.h"
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
setlocale(LC_CTYPE,"rus"); 
    char b;
    char L;
    char l;
    cout << "Введите букву верхнего или нижнего ренистра: " << endl;
    cin >> b;
    if (b != toupper(b))
    {
        L = toupper(b);
        cout << "Ваша буква в верхнем регистре: " << L << endl;
    }
    else
    {
        l = tolower(b);
        cout << "Ваша буква в нижнем регистре: " << l << endl;
    }
    _getch();
    return 0;
}
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2017, 13:19
Ответы с готовыми решениями:

Инвертировать регистр введенных букв
Всем привет, подскажите как сделать так, чтобы программа выполнялась во время ввода. Т.е задание,...

Изменить регистр букв
Ребята, помогите пожалуйста дописать. Суть в том, что меняет верхний на нижний, а как сделать,...

исправьте ошибку (изменить регистр букв в файле)
Здравствуйте! Задача - заменить все строчные буквы следующие после точки или точка+пробел на...

Надо передать вектор в функцию и изменить регистр букв
#include &lt;string&gt; #include &lt;algorithm&gt; #include&lt;cstdlib&gt; #include &lt;vector&gt; #include...

6
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
14.12.2017, 13:36 2
Функции toupper() и tolower() не работают с русским языком. Как вариант, напишите свои аналоги функций.
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
14.12.2017, 13:50 3
krutosh, чтобы не заморачиваться с локалями и кодировками, я в свое время сделал маленькую функциклюшечку
C++
1
2
3
4
5
6
unsigned char myToupp(unsigned char c)  // В большие буквы (1251-кодировка)
{ 
   if ((c>=97 && c<=122) || c>=208) c = c - 32;
   else if (c==184) c = c - 16;  // Буква ё
   return c;
}
Добавлено через 1 минуту
Может быть вам поможет этот материал https://ru.wikipedia.org/wiki/Windows-1251
1
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
14.12.2017, 14:01 4
Байт, а почему не так?

C++
1
if ((c>=97 && c<=122) || c>=224) c = c - 32;
0
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
14.12.2017, 14:08 5
Цитата Сообщение от QuakerRUS Посмотреть сообщение
Байт, а почему не так?
Да, правильно у вас! Это я взял из какой-то другой кодовой страницы, второпях не проверил...
0
1 / 2 / 0
Регистрация: 15.11.2017
Сообщений: 36
14.12.2017, 18:14  [ТС] 6
Спасибо за помощь)
0
Эксперт С++
8971 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
14.12.2017, 18:19 7
Цитата Сообщение от krutosh Посмотреть сообщение
а с русскими нет, почему?
потому что с++ не осилил локали.
корректная работа toupper/tolower гарантируется только для английских буковок.

для локализации - только пост, молитва, пухлые фреймворки,
или заранее известная кодировка файла-исходника.
0
14.12.2017, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2017, 18:19
Помогаю со студенческими работами здесь

Регистр букв
не знаю как вопрос правильно задать... int drawTriangle(int lines,string a){...

Изменить регистр
Описать процедуру upCaseRus(S), преобразующую все строчные русские буквы строки S в прописные...

Регистр букв, ошибка
Работает только с большими буквами т.е. ASDF -&gt; asdf Наоборот не работает, помогите разобраться....

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


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

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

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