Страница 1 из 1

почему? неработает...

Добавлено: 22 сен 2009, 15:26
mdems
:( помогите пожалуста почему не читает кнопки с клавиатуры, и не делает никаких движений программа...

Код: Выделить всё

#include <iostream>
using namespace std;
#include <ctype.h>

void main()
{
char letter;
	cout << " Xo4esh IIPogoJI}|{uTb? (Y/N): " << endl;
	do
	{
		letter = cin.get();
		letter = isupper(letter);
	}
	while((letter !='Y') && (letter !='N'));
	cout << endl << "Tu BBeJI" << letter << endl;
} 

Re: почему? неработает...

Добавлено: 22 сен 2009, 16:40
rrrFer
isupper(letter); возвращает 1 если letter содержит код буквы верхнего регистра, иначе 0. если вы вводите любую букву, то к началу проверки
((letter !='Y') && (letter !='N')); letter содержит или 1 или 0.
чтобы перевести символ в верхний регистр используйте int toupper(int ch);
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
cin.get() ждет пока пользователь нажмет <enter>, вместо него можно использовать getche():

Код: Выделить всё

#include <iostream>
#include <conio.h>
using std::cout;
using std::endl;
int main() { 
	char letter; 
    cout << " Xo4esh IIPogoJI}|{uTb? (Y/N): " << endl; 
    do{ 
        letter = getche();
        letter = toupper(letter); 
    } 
    while(letter !='Y' && letter !='N'); 
    cout << endl << "Tu BBeJI" << letter << endl; 
	system("pause");
	return 0;
}

Re: почему? неработает...

Добавлено: 22 сен 2009, 17:17
Newbie
rrrFer писал(а):isupper(letter); возвращает 1 если letter содержит код буквы верхнего регистра, иначе 0. если вы вводите любую букву, то к началу проверки
((letter !='Y') && (letter !='N')); letter содержит или 1 или 0.
чтобы перевести символ в верхний регистр используйте int toupper(int ch);
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
cin.get() ждет пока пользователь нажмет <enter>, вместо него можно использовать getche():

Код: Выделить всё

#include <iostream>
#include <conio.h>
using std::cout;
using std::endl;
int main() { 
	char letter; 
    cout << " Xo4esh IIPogoJI}|{uTb? (Y/N): " << endl; 
    do{ 
        letter = getche();
        letter = toupper(letter); 
    } 
    while(letter !='Y' && letter !='N'); 
    cout << endl << "Tu BBeJI" << letter << endl; 
	system("pause");
	return 0;
}
обьясните смысл строки:
cout << endl << "Tu BBeJI" << letter << endl;

после цикла?

Re: почему? неработает...

Добавлено: 22 сен 2009, 17:25
rrrFer
Newbie
это не комне вопрос, посмотри на программу в первом посту темы.
Предполагаю, что mdems хочет узнать с помошью какой кнопки пользователь вышел из цикла, то-есть Y или N.

Re: почему? неработает...

Добавлено: 23 сен 2009, 09:26
mdems
да cout это выводит на экран...) :)