Форум программистов, компьютерный форум CyberForum.ru

Использование cctype - C++

Восстановить пароль Регистрация
 
iceglen
 Аватар для iceglen
24 / 24 / 2
Регистрация: 24.06.2013
Сообщений: 105
26.09.2013, 23:02     Использование cctype #1
1. Напишите программу, которая читает клавиатурный ввод до символа @ и повторяет его, за исключением десятичных цифр, преобразуя каждую букву верхнего регистра в букву нижнего регистра и наоборот. (Не забудьте о семействе функций cctype.)

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
#include <iostream>
#include <cctype>
 
using namespace std;
 
int main()
{
  cout << "Enter some letters (@ for quit): " << endl;
  char ch;
  cin.get(ch);
  while(ch != '@')
  {
    if(isupper(ch))
    {
      tolower(ch);
      cout << ch;
    }
    else if(islower(ch))
    {
      toupper(ch);
      cout << ch;
    }
    else if(ispunct(ch))
    {
      cout << ch;
    }
    else if(isspace(ch))
    {
      cout << ch;
    }
    cin.get(ch);
  }
  cout << endl;
  return 0;
}
Проблема в том, что программа не переводит буквы в противоположный регистр, хотя компилируется без ошибок. Я что-то упустил?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 23:02     Использование cctype
Посмотрите здесь:

C++ Использование this.
C++ Cctype
C++ Использование функций
C++ Использование функции gets
C++ Написать программу с использованием функции cctype
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.09.2013, 23:32     Использование cctype #2
Ты просто проверяешь регистр символов. Для того что бы перевести символ в нижний или верхний регистр нужно использовать функции tollower() или toupper()

Добавлено через 1 минуту
а да я недоглядел ты все правильно сделал просто замени строчку toupper(ch); на ch=toupper(ch); и для toupper() так же.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
26.09.2013, 23:36     Использование cctype #3
C++
1
2
3
cout << (char)tolower(ch);
//...
cout << (char)toupper(ch);
Rick26rus
0 / 0 / 0
Регистрация: 12.06.2015
Сообщений: 10
03.10.2015, 17:53     Использование cctype #4
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
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
  cout << "Enter some letters (@ for quit): " << endl;
  char ch;
  cin.get(ch);
  while(ch != '@')
  {
   if (islower(ch))
   {
    ch=toupper(ch);
      cout<<ch;
    }
    else if(isupper(ch))
    {
      ch=tolower(ch);
      cout<<ch;
    }
    else if (isdigit(ch))
    {
        ch=' ';
        cout<<ch;
    }
    cin.get(ch);
  }
  return 0;
}
Вот рабочая прога. Вместо цифр вводит пробел, верхний регистр переводит в нижний и наоборот. Учебник Стивена Прата хорошая вещь!
Yandex
Объявления
03.10.2015, 17:53     Использование cctype
Ответ Создать тему
Опции темы

Текущее время: 01:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru