Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/125: Рейтинг темы: голосов - 125, средняя оценка - 4.58
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41

Верхний и нижний регистр

31.10.2013, 22:20. Показов 24810. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите программу, которая читает клавиатурный ввод до символа @ и
повторяет его, за исключением десятичных цифр, преобразуя каждую букву верхнего
регистра в букву нижнего регистра и наоборот.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cctype>
using namespace std;
 
int main()
{
    char ch;
    char str[80];
    int count = 0;
    cout << "Ââåäèòå ïðåäëîæåíèå äî ñèìâîëà \"@\" ";
    while ((ch = cin.get()) != '@') {
          if ( ('a' <= ch) && (ch >= 'z') )
             str[count] = toupper(ch);
          if ( ('A' <= ch) && (ch >= 'Z') )
             str[count] = tolower(ch);
          cout << ch;
          ++count;
}
     
     return 0;
     }
Выходит ошибка, вывод просто выводит символы не изменяя регистр
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.10.2013, 22:20
Ответы с готовыми решениями:

Строки в С++. Верхний и нижний регистр
char alphabet; int i; char letter; for(letter='A',i=0;letter&lt;='Z'; letter++,i++) alphabet=letter; alphabet=NULL;...

Верхний и нижний регистр буквы
#include &lt;cctype&gt; #include &lt;iostream&gt; int main() { using namespace std; char ch; while(cin.get(ch) &amp;&amp; ch !=...

Кроссплатформенный перевод русских букв в верхний/нижний регистр
Добрый день. В прикрепленном топике описываются способы вывода русских букв на консоль. Но они почти все подвязаны под винду. Более...

9
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
31.10.2013, 22:39
У вас условия неверные, потому не в один If программа не заходила - ch >= 'z'|'Z' - символ должен быть порядком выше, за пределами алфавита.

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 <iostream>
using namespace std;
 
int main()
{
    char ch;
    while ((ch = cin.get()) != '@') 
    {
        if ( ch >= 'a' && ch <= 'z')
        {
            cout<<(char)(ch - 'a' + 'A');
        }
        else if ( ch >= 'A' && ch <= 'Z')
        {
            cout<<(char)(ch - 'A' + 'a');
        }
        else
        {
            cout << ch;
        }
    }
    cout<<'\n';
    system("pause");
    return 0;
}
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
31.10.2013, 22:56
Цитата Сообщение от JaySeven Посмотреть сообщение
C++
1
2
3
4
if ( ('a' <= ch) && (ch >= 'z') )
    str[count] = toupper(ch);
if ( ('A' <= ch) && (ch >= 'Z') )
str[count] = tolower(ch);
все это заменяется одной строчкой точнее двумя
C++
1
2
if (( ('a' <= ch) && (ch <= 'z'))||( ('A' <= ch) && (ch <= 'Z')))
   ch=ch^0x20;
большие и малые буквы в английском алфавите отличаются 6 битом(0x20)
изменяя (инвертируя) его можно менять большие на малые и наоборот
Цитата Сообщение от JaySeven Посмотреть сообщение
Выходит ошибка,
какая?
Цитата Сообщение от JaySeven Посмотреть сообщение
вывод просто выводит символы не изменяя регистр
еще бы
Цитата Сообщение от JaySeven Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
while ((ch = cin.get()) != '@') {
 if ( ('a' <= ch) && (ch >= 'z') )
   str[count] = toupper(ch);
 if ( ('A' <= ch) && (ch >= 'Z') )
   str[count] = tolower(ch);
     cout << ch;
    ++count;
}
выводим ch а измененные значения записываем в какой то буфер str, который нигде после не используется
зачем он нужен?
3
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
31.10.2013, 23:01
Цитата Сообщение от ValeryS Посмотреть сообщение
большие и малые буквы в английском алфавите отличаются 6 битом(0x20)
Ух ты, найс, найс. Хорошая информация. Спасибо.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
31.10.2013, 23:14
Цитата Сообщение от ValeryS Посмотреть сообщение
все это заменяется одной строчкой точнее двумя
а это в свою очередь простой
C++
1
2
if (isalpha(ch))
   ch=ch^0x20;
Итого:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <cctype>
 
int main()
{
    for (char ch; (ch = std::cin.get()) != '@'; std::cout << ch)
        if (isalpha(ch))
            ch ^= 0x20;
}
2
0 / 0 / 1
Регистрация: 16.02.2015
Сообщений: 9
28.02.2015, 13:05
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<cctype>
 
int main(){
    using namespace std;
char simvol;
cout<<" Vvedite stroku :"<<endl;
cin.get(simvol);
while(simvol!='@')
{
    if (isdigit(simvol)) //если введена десятичная цифра
    simvol--;                  //отступаем на 1 символ назад
    else if(islower(simvol))   //если символ нижнего регистра
    cout<<char(toupper(simvol));//перевести символ в верхний регистр.
    else
    cout<<char(tolower(simvol));//перевести символ в нижний регистр
    cin.get(simvol); //если этой строчки не будет, цикл будет бесконечен.
}              
 
    system("pause>>null");
     return 0; }
Добавлено через 14 минут
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
28.02.2015, 21:28
Цитата Сообщение от Tanko_Dav Посмотреть сообщение
else if(islower(simvol))
что будет если пользователь введет пробел или другой восклицательный знак?
Цитата Сообщение от Tanko_Dav Посмотреть сообщение
simvol--; * * * * * * * * *//отступаем на 1 символ назад
переведи
0
0 / 0 / 1
Регистрация: 16.02.2015
Сообщений: 9
28.02.2015, 22:37
Это делается для того что бы десятичные цифры просто удалялись и не оставляли за собой след. Если введена десятичная цифра, то ее можно просто обнулить например вместо simvol-- написать simvol=0, но тогда вместо цифры будет пробел.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
28.02.2015, 22:54
Цитата Сообщение от Tanko_Dav Посмотреть сообщение
Это делается для того что бы десятичные цифры просто удалялись
куда удалялись?
введена цифра 1 код 0х31 после
Цитата Сообщение от Tanko_Dav Посмотреть сообщение
simvol--;
получаем код 0х30 цифра 0
причем на экран она нигде не выводится
0
2 / 2 / 0
Регистрация: 16.03.2017
Сообщений: 7
21.03.2017, 15:52
Работающий код
#include <iostream>
#include <cctype>
#include <cstring>
#include <string>


int main()
{
using namespace std;

cout<<"Enter the text for analysis, to end enter @: ";
string str1;
string str2;
getline(cin,str1);
int len=str1.size();
for (int i=0;i<len && str1[i]!='@';i++)
{
if (isalpha(str1[i]) )
{
if (isupper(str1[i]))
str1[i]=tolower(str1[i]);
else if(islower(str1[i]))
str1[i]=toupper(str1[i]);
str2+=str1[i];
}
}
cout<<str2<<endl;
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2017, 15:52
Помогаю со студенческими работами здесь

Преобразование строки сначала в верхний регистр, потом в нижний
Напишите программу, которая преобразовывает все символы введенной строки сначала в верхний регистр затем в нижний регистр а затем заменяет...

Перевод символов в верхний/нижний регистры
Ребят. Подскажите как прописать функцию. Для перевода букв a. toLower – перевод буквы в нижний регистр b. toUpper – перевод буквы...

Нижний регистр
Помогите пожалуйста с заданием. Как правильно написать. А то мучалась, так ни чего не смогла сделать. Задание: Написать программу,...

В верхний регистр
Привет всем. Подскажите как можно сделать чтобы при передаче в функцию строки ( word ) она изменяла первую букву каждого слова на...

Строку в нижний регистр
вводится русская строка (слово ) кодировка 1251, необходимо привести ее к нижнему регистру #include &lt;ctype.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru