5 / 0 / 0
Регистрация: 06.07.2013
Сообщений: 59
1

Как перевести букву из нижнего регистра в верхний?

10.07.2013, 18:32. Показов 35654. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Например:
Введите букву: g
Та же буква в верхнем регистре: G
Желательно с пояснением)
и 2 вопрос, а с русскими можно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2013, 18:32
Ответы с готовыми решениями:

Символы из нижнего регистра перевести в верхний
Приветствую. Нужно символы из нижнего регистра перевести в верхний. Вот сама программа (которую...

Буква из нижнего регистра в верхний
добрый день, цель задачи: Преобразование букв нижнего регистра в верхний регистр, используя...

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

Написать функцию которая в строке заменяет все символы верхнего регистра в символы нижнего регистра
Здравствуйте. помогите написать программу. Написать функцию которая в строке заменяет все символы...

15
190 / 160 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
10.07.2013, 18:42 2
toupper('g')
из ctype.h
0
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
10.07.2013, 18:50 3
можно прибавлять в букве разницу между регистрами.
0
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
10.07.2013, 18:52 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    char ch;
 
    std::cout << "Введите букву: ";
    std::cin >> ch;
 
    ch = toupper(ch);
    
    std::cout << "Та же буква в верхнем регистре: " << ch << std::endl;
 
    system("pause");
    return 0;
}
вот с русскими буквами что то глючит
1
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
10.07.2013, 19:07 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <windows.h>
 
int main()
{
    char arr[2] = {0};
    while(true)
    {
        std::cin.get(arr[0]).ignore(100, '\n');
        OemToCharA(arr, arr);
        arr[0] == -72 ? arr[0] = -88 : arr[0] -= 32;
        CharToOemA(arr, arr);
        std::cout << arr;
    }
    return 0;
}
1
5 / 0 / 0
Регистрация: 06.07.2013
Сообщений: 59
10.07.2013, 19:11  [ТС] 6
Всем огромное Спасибо!
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2013, 05:11 7
Цитата Сообщение от BigLow Посмотреть сообщение
вот с русскими буквами что то глючит
Чтобы с русскими не глючило, нужно русский ввод сделать (но setlocale(LC_ALL, "Russian") тоже оставить) и приводить параметр toupper() к unsigned char(toupper() без такого приведения работает, но другие функции cctype могут вызывать ошибку):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstdlib>
#include <windows.h>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char ch;
 
    std::cout << "Введите букву: ";
    std::cin >> ch;
 
    ch = toupper((unsigned char)ch);
    
    std::cout << "Та же буква в верхнем регистре: " << ch << std::endl;
 
    system("pause");
    return 0;
}
Миниатюры
Как перевести букву из нижнего регистра в верхний?  
3
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
11.07.2013, 06:47 8
функция, по-видимому, просто выполняет прибавление. поэтому всегда нужна проверка.
C++
1
2
3
char c;
if(islower(c))
   c = toupper(c);
а вообще лучше определить собственную безопасную функцию. например:
C++
1
2
3
char toup(char c) {
   return (c >= 'a' && c <= 'z' ? (char)('A' + (c - 'a')) : c);
}
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2013, 07:07 9
Цитата Сообщение от salam Посмотреть сообщение
функция, по-видимому, просто выполняет прибавление. поэтому всегда нужна проверка.
Это по поводу?...
1
5 / 0 / 0
Регистрация: 06.07.2013
Сообщений: 59
11.07.2013, 07:49  [ТС] 10
alsav22, тебе отдельное спс за код и за объяснение
0
0 / 0 / 0
Регистрация: 12.02.2021
Сообщений: 28
13.08.2021, 16:20 11
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main() {
    char s;
    cin >> s;
    if(s >= 'a' && s <= 'z'){
        cout << char(s - 32); //перевод в верхний регистр, если буква маленькая
    }else if(s >= 'A' && s <= 'Z') cout << char(s + 32); //перевод в внижний регистр, если буква большая
    return 0;
}
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
13.08.2021, 16:41 12
Programmer c, еще вариант:
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    system("chcp 1251 > nul");
    char ch = 'ы';
    ch = _toupper_l(ch, _get_current_locale());
}
0
3878 / 2476 / 418
Регистрация: 09.09.2017
Сообщений: 10,829
14.08.2021, 13:26 13
Цитата Сообщение от liv Посмотреть сообщение
еще вариант:
Код
$ g++ main.c
main.c:6:15: warning: multi-character character constant [-Wmultichar]
    6 |     char ch = 'ы';
      |               ^~~~
main.c: In function ‘int main()’:
main.c:6:15: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘53643’ to ‘'\37777777613'’ [-Woverflow]
main.c:7:25: error: ‘_get_current_locale’ was not declared in this scope
    7 |     ch = _toupper_l(ch, _get_current_locale());
      |                         ^~~~~~~~~~~~~~~~~~~
main.c:7:10: error: ‘_toupper_l’ was not declared in this scope; did you mean ‘toupper_l’?
    7 |     ch = _toupper_l(ch, _get_current_locale());
      |          ^~~~~~~~~~
      |          toupper_l
Добавлено через 3 минуты
А вот если использовать стандартные функции, все работает:
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>
#include <locale.h>
 
int main(){
  wchar_t ch = L'ы';
  setlocale(LC_ALL, "");
  ch = towupper(ch);
  printf("%lc\n", ch);
}
0
2750 / 2257 / 694
Регистрация: 29.06.2020
Сообщений: 8,355
14.08.2021, 15:51 14
интересно как вы будете это делать с ucs2
со своим + -
костылеклепальщики ...

Добавлено через 1 минуту
Для перевода регистра букв, нужно иметь карту в одну и обратную стороны.
Это универсальный, надежный способ.
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
14.08.2021, 15:54 15
Цитата Сообщение от IIA Посмотреть сообщение
if(s >= 'a' && s <= 'z'){
        cout << char(s - 32); //перевод в верхний регистр, если буква маленькая
    }else if(s >= 'A' && s <= 'Z') cout << char(s + 32); //перевод в внижний регистр, если буква большая
Зачем сложение и вычитание?
C++
1
2
3
if((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z')){
    cout << char(s ^ 32);
}
0
Модератор
Эксперт по электронике
8902 / 6672 / 917
Регистрация: 14.02.2011
Сообщений: 23,500
14.08.2021, 16:02 16
Цитата Сообщение от IIA Посмотреть сообщение
C++
1
2
3
if(s >= 'a' && s <= 'z'){
        cout << char(s - 32); //перевод в верхний регистр, если буква маленькая
    }else if(s >= 'A' && s <= 'Z') cout << char(s + 32); //перевод в внижний регистр, если буква большая
все это делается одной строчкой
C++
1
s^=0x20;
но только для латинского алфавита кодированного в ASCII
0
14.08.2021, 16:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2021, 16:02
Помогаю со студенческими работами здесь

написать функцию, которая в строке заменяет все символы верхенго регистра в символы нижнего регистра
привет всем, помогите составить программу для решения данной задачи. написать функцию, которая в...

В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра
9. В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра. help

Заменить все буквы нижнего регистра в строке на буквы верхнего регистра
Определить функцию, заменяющую все буквы нижнего регистра в строке на буквы верхнего регистра.

Функция преобразует буквы верхнего регистра в строке s в буквы нижнего регистра
Задание: strlwr char *strlwr( char *s); Функция преобразует буквы верхнего регистра в строке s...


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

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

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