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

Если введена буква, то - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
16.11.2012, 16:58     Если введена буква, то #1
C++
1
2
3
4
5
char k;
cin>>k;
if(k=='a'||k=='b'||k=='c'||k=='d'...)
{
}
Если введенный символ - буква, делать то то. Проблема в том, что придется писать все буквы от a до z, как можно сделать это проще ? Как сделать то же самое с цифрами ?

И еще вопрос: в коде я постоянно пишу "k==", можно ли написать как нибудь проще, вроде
C++
1
2
3
if(k=='a'||'b'||'c'||'d'...)
{
}
?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2012, 16:58     Если введена буква, то
Посмотрите здесь:

C++ Создать функцию на согласные буквы, если согл. буква, то функция возвращает ей значение 1, а гласной-0.
C++ Дан текстовый файл F. найти самое долгое слово, вторая буква которых "о". если слов с одинаковой длинной несколько, то сообщить об этом
C++ Составить программу, которая просит вводить буквы до тех пор, пока не будет введена буква y или Y
Программа должна распечатывать прописью значение суммы в долларах,если введена сумма в рублях,или... C++
C++ Если введена строка, вывести предупреждение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Illusive
17 / 17 / 0
Регистрация: 11.01.2008
Сообщений: 51
16.11.2012, 17:23     Если введена буква, то #2
Для этого есть функции, например isalpha(k); или isdigit(k);

isalpha(k) !=0 то k -буква
isdigit(k) !=0 то k -цифра

Подключаемый файл
#include <ctype.h>

Добавлено через 5 минут
На второй вопрос: Так нельзя и проще не получится,
разве что нужно делать дикое количество сравнений,
тогда можно использовать ассоциативный контейнер
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
16.11.2012, 17:32     Если введена буква, то #3
Цитата Сообщение от Alejo Посмотреть сообщение
Как сделать то же самое с цифрами ?
с помощью оператора выбора switch
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch ( k ) 
{
  case 1 : 
    // Выполняется, если k = 1
    ...
    break;
  case 5 : 
    // Выполняется, если k = 5
    ...
    break;
  default : 
    // Выполняется, если ничего из вышеперечисленного не подошло
    ...
}
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
16.11.2012, 17:50  [ТС]     Если введена буква, то #4
Illusive, Спасибо, работает... кроме кириллицы. Как быть с кириллицей ?

Ryuk, оператор switch то же самое - придется писать все цифры от 0 до 9

Добавлено через 9 минут
ps: Когда то давно видел на форуме тему "Как правильно писать программы", там было написано почему нельзя использовать using namespace std; и т.д. Если кто видел - скиньте ссылку.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
16.11.2012, 18:20     Если введена буква, то #5
Alejo, его можно использовать. Просто не рекомендуется в том коде, где функций std всего 2-3.
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
16.11.2012, 18:22  [ТС]     Если введена буква, то #6
Ryuk, я не про std, я вообще про "как правильно писать код, что бы он был понятен другим"
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
16.11.2012, 18:23     Если введена буква, то #7
switch используется, если тебе нужно указать для каждого числа конкретное действие. И проще никак.

Добавлено через 44 секунды
Alejo,
Цитата Сообщение от Alejo Посмотреть сообщение
using namespace std;
что тут непонятного
Illusive
17 / 17 / 0
Регистрация: 11.01.2008
Сообщений: 51
16.11.2012, 18:34     Если введена буква, то #8
Alejo
Использовать другой вариант функции isalpha
из
#include <locale>

locale loc ("Russian_Russia");
if(isalpha(ch, loc)) cout << "ch - Символ";
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
16.11.2012, 19:03  [ТС]     Если введена буква, то #9
Ryuk, Хм, видимо я как то неправильно объясняю. Я не спрашиваю что такое свитч или стд, меня интересует как лучше писать код, как сделать его понятным всем, не знаю как объяснить, лучше приведу пример:
C++
1
2
3
4
5
6
7
//Здесь непонятно что такое а, а что такое tralala.
int a=30;
char tralala='r';
 
//А здесь уже более понятно.
int max_ammo_ak_74=30;
char reload_key='r';
Меня интересуют условные стандарты введенные программистами что бы лучше понимать код друг друга. Видел такую тему на этом форуме, но не могу найти - мне нужна ссылка на эту тему.


Цитата Сообщение от Ryuk Посмотреть сообщение
switch используется, если тебе нужно указать для каждого числа конкретное действие. И проще никак.
Illusive привел пример проще.
Illusive
17 / 17 / 0
Регистрация: 11.01.2008
Сообщений: 51
16.11.2012, 19:09     Если введена буква, то #10
Кстати isalpha из моего последнего сообщения работает с русскими буквами, проверил
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
16.11.2012, 19:15  [ТС]     Если введена буква, то #11
Illusive,
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <locale>
#include <iostream>
using namespace std;
locale loc ("Russian_Russia");
void main()
{
    char ch;
    cin>>ch;
if(isalpha(ch, loc)) 
cout << "ch symbol"; 
system("pause");
}
некоторые буквы работают, а вот "й" почему то нет
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
16.11.2012, 19:15     Если введена буква, то #12
Alejo, лучше берите книгу Макконнелла "Совершенный код"
Там много полезного по поводу читаемости кода
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2012, 19:20     Если введена буква, то
Еще ссылки по теме:

Если введена не цифра C++
(Только простой вариант)Дано слово и буква.Сколько раз эта буква встречается в слове C++
C++ Как организовать проверку введённого числа, если введена буква то выдает ошибку и просит ввести число снова

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

Или воспользуйтесь поиском по форуму:
Illusive
17 / 17 / 0
Регистрация: 11.01.2008
Сообщений: 51
16.11.2012, 19:20     Если введена буква, то #13
некоторые буквы работают, а вот "й" почему то нет
Интересно.
Но тут уж вряд-ли чем поможешь, если очень надо придется все-таки добавить
if(k=='й'||k=='Й')
Yandex
Объявления
16.11.2012, 19:20     Если введена буква, то
Ответ Создать тему
Опции темы

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