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

Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
valent11
 Аватар для valent11
8 / 8 / 2
Регистрация: 30.11.2011
Сообщений: 64
18.09.2013, 21:17     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #1
Написать программу, где ожидается ввод символа с клавиатуры, после чего определяется, является ли этот символ буквой, цифрой или специальным символом.
Без свитча я реализовал вот ток теперь не пойму как сделать на свитч
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
#include <iostream>
#include <windows.h>
#include <ctype.h>
#include <stdio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    system("Color 0a");
    
    char ch;
    cout<<"Введите символ :"<<endl;
    ch=getchar();
    if(isalpha(ch))
    {
        cout<<"Символ"<<endl;
        system("pause");
        return 0;
    }
    if(isdigit(ch))
    {
        cout<<"Цифра"<<endl;
        system("pause");
        return 0;
    }
    if(ispunct(ch))
    {
        cout<<"Пунктуация"<<endl;
        system("pause");
        return 0;   
    }
    
    
        
    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2013, 21:17     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ
Посмотрите здесь:

Является ли симол буквой или цифрой C++
C++ является ли символ буквой, цифрой или каким нибудь спецсимволом
определить чем является введенный символ: буквой цифрой или оператором? C++
C++ Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +,*,-
Определить, является ли символ цифрой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
18.09.2013, 22:08     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #2
В такой форме - пожалуй, никак.
Можно реализовать функцию-обертку для этих ispunct, isdigit, ..., возвращающую перечислимый тип - и использовать в switch результат возврата этой функции - правда, получится что поверх своего кода ты просто добавишь лишние проверки...

Ну, или тупо перебор всех значений(благо цифр и знаков пунктуации не так много)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,913
Записей в блоге: 2
Завершенные тесты: 1
18.09.2013, 22:10     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #3
C++
1
2
3
4
5
6
7
8
9
10
11
    switch ( bool ( isalpha(ch) ) + ( bool ( isdigit ( ch ) ) << 1 ) + ( bool ( ispunct ( ch ) ) << 2 ) ) {
      case 1:
        cout<<"Символ"<<endl;
    break ;
      case 1<<1:
    cout<<"Цифра"<<endl;
    break ;
      case 1<<2:
    cout<<"Пунктуация"<<endl;
    break;
    }
valent11
 Аватар для valent11
8 / 8 / 2
Регистрация: 30.11.2011
Сообщений: 64
18.09.2013, 22:42  [ТС]     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #4
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
    switch ( bool ( isalpha(ch) ) + ( bool ( isdigit ( ch ) ) << 1 ) + ( bool ( ispunct ( ch ) ) << 2 ) ) {
      case 1:
        cout<<"Символ"<<endl;
    break ;
      case 1<<1:
    cout<<"Цифра"<<endl;
    break ;
      case 1<<2:
    cout<<"Пунктуация"<<endl;
    break;
    }
а не могли бы Вы обьяснить суть свитча , я имею ввиду что Вы написали)
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
18.09.2013, 23:16     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #5
Оригинально)
Это он биты 1, 2, 3 устанавливает взависимости от результатов функции(1 или 0 на соотв. позиции), а в switch'е эти биты проверяет(ненулевой какой-то один будет). Но вроде бы как тогда логичнее было б | использовать...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.09.2013, 23:18     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #6
valent11, с русскими символами код работает?
valent11
 Аватар для valent11
8 / 8 / 2
Регистрация: 30.11.2011
Сообщений: 64
18.09.2013, 23:44  [ТС]     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #7
Цитата Сообщение от alsav22 Посмотреть сообщение
valent11, с русскими символами код работает?
да , работает
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.09.2013, 23:50     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #8
Цитата Сообщение от valent11 Посмотреть сообщение
да , работает
Среда, ОС какая?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2013, 23:52     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ
Еще ссылки по теме:

C++ Напишите подпрограмму, которая определяет, является ли введенный символ гласной буквой русского или латинского алфавита
C++ Написать функцию, которая определяет, является ли введенный символ буквой
Вывести символ на экран, если он является буквой или цифрой C++

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

Или воспользуйтесь поиском по форуму:
valent11
 Аватар для valent11
8 / 8 / 2
Регистрация: 30.11.2011
Сообщений: 64
18.09.2013, 23:52  [ТС]     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Среда, ОС какая?
Dev-C++ 5.3.0.4
Windows 7
Yandex
Объявления
18.09.2013, 23:52     Оператор выбора: определить, буквой, цифрой или спецсимволом является введенный символ
Ответ Создать тему
Опции темы

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