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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
#1

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

16.11.2012, 16:58. Просмотров 1769. Ответов 12
Метки нет (Все метки)

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++
cout << "Введите номер магазина: "; while (!(cin >> a.Number) || a.Number <= 0 || a.Number >= 1000000) { cout << "Ошибка...

Читать слова по одному за раз, пока не будет введена буква q - C++
Необходимо написать программу, которая читает слова по одному за раз, пока не будет введена буква q. После этого программа должна сообщить,...

Реализовать программу, которая читает слова по одному за раз, пока не будет введена отдельная буква q - C++
Напишите программу, которая читает слова по одному за раз, пока не будет введена отдельная буква q. После этого программа должна сообщить...

Составить программу, которая просит вводить буквы до тех пор, пока не будет введена буква y или Y - C++
На паре задали создать задачу: Составить программу, которая просит вводить буквы до тех пор, пока не будет введена буква y или Y. ...

Если введена не цифра - C++
Есть переменная. Проверить введенное значение. Если это цифра, продолжить работу, нет выдать ошибку.

Если введена строка, вывести предупреждение - C++
if(введена любая строка){ cout << "Символы вводить нельзя"; } else{ cout << "Все нормально, продолжаем."; } ...

Программа должна распечатывать прописью значение суммы в долларах,если введена сумма в рублях,или... - 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
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
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
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
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
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
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.
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++
Ввести произвольной строку символов. если подряд встречаются буква i цифра, то изъять цифру; Посчитать количество выполненных операций...

Если символ — большая латинская буква, то заменить в нем 3-й бит нулем - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cctype&gt; #include &quot;math.h&quot; #include &quot;stdio.h&quot; using...

Если символ — русская гласная буква, то заменить в нем младший бит единицей - C++
Ввести последовательность из 8 символов. Если символ - русская гласная буква, то заменить в нем младший бит единицей, иначе - заменить 2-й...

Если символ — русская гласная буква, то заменить в нем младший бит единицей - C++
Собственно, совсем не получается выполнить следующее задание: Ввести последовательность из 8 символов. Если символ - русская гласная...

Создать функцию на согласные буквы, если согл. буква, то функция возвращает ей значение 1, а гласной-0. - C++
Помогите пожалуйста, не могу понять где тут ошибка! уже так долго с ней мучаюсь=( #include&lt;iostream&gt; using namespace std; void...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru