dakishi, дело всё в том, что вы читаете символы из консоли, а там кодировка cp866. Это у вас не указано. Символы записанные в q1 так и останутся в этой кодировке (я так думаю) и сравнивать их нужно будет со строкой в той же кодировке cp866. Как вариант, можно пользоваться "юникодным" строковым типом.
Вот рабочий пример:
Код:
void main()
{
wstring q1;
wcin.imbue(locale(".866"));
wcin >> q1;
if(q1 == L"вода") cout << "1";
else cout << "2";
}