0

Суть программы в том, что для введеного символа надо вывести латинский или русский это символ, также учесть его регистр. Подскажите как сделать это проще.

  setlocale(LC_ALL,"Russian");
  char i;
  cin >>i;
  char e1 = 'A';
  char e2 = 'Z';
  char e3 = 'a';
  char e4 = 'z';
  char ru1 = 'А';
  char ru2 = 'Я';
  char ru3 = 'а';
  char ru4 = 'я';
  if ((i>=e1)&&(i<=e2)){cout <<"ENG";}
  if ((i>=e3)&&(i<=e4)){cout <<"eng";}
  if ((i>=ru1)&&(i<=ru2)){cout <<"RU";}
  if ((i>=ru3)&&(i<=ru4)){cout <<"ru ";}
  else{cout <<"error";}

  return a.exec();
ixSci
  • 23,825

1 Answers1

-1

Эта функция проверяет, является ли символ символом в верхнем регистре:

isupper(character)

Эта функция проверяет, является ли символ символом в нижнем регистре:

islower(character)

Можете использовать их и сократить свои условные выражения

if ((i>=ru1)&&(i<=ru2)){cout <<"RU";}
if ((i>=ru3)&&(i<=ru4)){cout <<"ru ";}

Проверьте только, как эти функции реагируют на русский алфавит. А реагируют они плохо. Вот в этом вопросе обсуждалась эта проблема. Обратите внимание, в ответе говорится, что в настройках студии можно поставить ключ, делающий char беззнаковым, а можно использовать wchar_t. Также можете посмотреть в сторону std::locale из <locale>.

Jens
  • 3,373
  • не забывайте о букве Ё. Она не входит в указанный диапазон. – KoVadim Nov 01 '17 at 15:47