Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2011, 13:58   #1
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
Лампочка Dev-C++ Ввод данных

Здравствуйте! Проблема с программой: Вводишь один символ с клавиатуры, а на экран появляется другой. Вот программа:

Код:
#include <iostream>
#include <conio>
#include <windows.h>

using namespace std;

char s1[256];
char *rus(char *s2)
{AnsiToOem(s2,s1);return s1;}

int main()
{ 
   int done = 0; //  устанавливается в состояние "истина" если введены Д или Н char letter; 
   char letter;
   while (! done)
   { 
      cout << rus("\nВведите Д или Н и нажмите Enter для продолжения: "); 
      cin>>letter; 
      if ((letter == 'Д') || (letter == 'д')) 
         done = 1; 
         else if ((letter == 'Н' ) || (letter == 'н')) 
            done = 1; 
            else cout << '\a'; // Играть сигнал динамика для неверного символа 
   } 
   cout << rus("Вы ввели букву ") <<letter<< endl; 
   getch();
}
По идее нужно ввести Д или Н, следуя инструкциям программы, но когда вводишь Д или Н, он пищит что неправильно. Приходится вводить ф или э. В чём проблема и как её исправить?
Не стоит читать свои переписки двухлетней давности...

Последний раз редактировалось Stilet; 19.02.2011 в 15:58.
genrix вне форума Ответить с цитированием
Старый 19.02.2011, 16:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рискну предположить что SetLocale(LC_ALL,"Russian"); решит твою проблему.
При этом надобность в функции rus() отпадает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2011, 16:38   #3
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
По умолчанию

Я пробовал и setlocale (LC_ALL,"rus"); и setlocale (0,"RUS"); не помогает. Мне тут советовали
char s1[256];
char *rus(char *s2)
{ AnsiToOem(s2,s1);return s1; }
помогло, но только на простых задачках. Например:
Код:
#include <iostream>
#include <conio>
#include <windows.h>

using namespace std;

char s1[256]; 
char *rus(char *s2)
{ AnsiToOem(s2,s1);return s1; }
int main (void)
{ 
   char letter; 
   cout <<rus("Введите любую букву и нажмите Enter:) "; 
   cin >> letter; 
   cout << rus("Была введена буква ") << letter << endl; 
   getch();
}
Но если использовать эту функцию к вышеупомянутой программе, то опять ничего не выходит. Так-то программа работает нормально, но когда на вопрос:"\nВведите Д или Н и нажмите Enter для продолжения: " вводишь Д или Н, прога их не воспринимает. Мне кажется, что каким-то образом введённая буква в переменную letter как-то "конвертируется" в абсолютно другую букву, а иногда даже в знаки препинания! Можно это хоть как-то исправить, или каким-то куском кода всё это предотвратить?????

SetLocale(LC_ALL,"Russian"); позволяет выдавать на русском только то, что написано в cout.(проверил, запустив программу с этой строчкой) Если бы был какой-нибудь код, позволяющий показывать в командной строке то, что написано в переменной.
Не стоит читать свои переписки двухлетней давности...

Последний раз редактировалось Stilet; 19.02.2011 в 17:39.
genrix вне форума Ответить с цитированием
Старый 20.02.2011, 14:35   #4
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
По умолчанию

Выходит, такая проблема у меня одного.)))
Не стоит читать свои переписки двухлетней давности...
genrix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение к сайту, ввод данных, отправка данных. Hichigo Общие вопросы C/C++ 0 20.07.2010 20:24
Ввод данных. BlincAttack Общие вопросы .NET 5 16.10.2009 00:38
Ввод данных Deni55 Microsoft Office Excel 7 01.06.2009 16:46
Ввод данных policedog Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 30.05.2009 21:53
ввод данных opel.omega Общие вопросы Delphi 12 18.11.2008 14:15