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

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

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

Сравнение русских слов - C++

18.10.2013, 22:52. Просмотров 1324. Ответов 11
Метки нет (Все метки)

Здравствуйте! Пишу программу для опроса людей (так сказать тест знаний). Так вот, программа задает вопрос, человек должен на него ответить, если отвечает правильно - выводиться сообщение "Ответ правильный", если нет - "Неверно".
Вот исходник С++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <locale>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    char otvet[256];
    char vopros[] = "Москва";
    cout << "Столица России:" << endl;
    cin >> otvet;
    if (strcmp(otvet, vopros) != 0)
    {
        cout << "Ответ правильный" << endl;
    }
    else
    {
        cout << "Неверно" << endl;
    }
    return 0;
}
Проблема вот в чем, когда ввожу любое слово, букву или цифру, будет выдавать сообщение "Ответ правильный". К примеру ввожу Москва - "Ответ правильный", ввожу цифры - "Ответ правильный". Что делать? В чем ошибка?

Добавлено через 1 час 35 минут
Кто-нибудь поможет???

Добавлено через 14 секунд
Кто-нибудь поможет???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2013, 22:52     Сравнение русских слов
Посмотрите здесь:

Сравнение русских слов - C++
Как сравнить русские слова? Имеется вот такой код. При сравнении слов не выводит перевод { case 1: { cout &lt;&lt; &quot;Введите...

Дана строка, состоящая из русских слов. Найти количество слов, которые содержат ровно три буквы «А» - C++
Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Найти количество...

Сравнение русских символов. - C++
Проблема с русскими символами. Русские символы заносятся в массив занимая две ячейки( 2 байта ). Думаю это связано с UTF-8 кодировкой. ...

Сравнение русских букв с их кодами - C++
Всем доброго времени суток. Имеется проблема ввода русского языка в консоле(!), при выполнении программы. Суть задания: пользователь...

Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). ​​Определить количество слов, которые заканчиваются одной и той - C++
Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). ​​Определить количество слов, которые заканчиваются...

некорректный вывод русских слов - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale(0, &quot;&quot;); string name; cout &lt;&lt; &quot;Введи твое...

Циклы и присвоение русских слов - C++
Привет! Хочется написать программу, чисто для интереса. Вот моя прога, ниже, она теоритически должна делать следующее – в ней находится...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.10.2013, 00:24     Сравнение русских слов #2
strcmp возвращает 0 если строки идентичны.
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
19.10.2013, 00:53     Сравнение русских слов #3
1.
C++
1
if (!strcmp(otvet,vopros))
2. Вы уверены, что ввод происходит в кодировке Win-1251?
dext0r2010
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 11
19.10.2013, 11:14  [ТС]     Сравнение русских слов #4
Цитата Сообщение от gazlan Посмотреть сообщение
2. Вы уверены, что ввод происходит в кодировке Win-1251?
Нет, я даже не знаю в какой кодировке все происходит. Как это можно проверить?
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
19.10.2013, 11:36     Сравнение русских слов #5
Тот (русский) текст, что мы видим сейчас на экране - 1251. setlocale (LC_ALL,"Russian"); требует конверсии при вводе\выводе, но я не уверен, что это реально у вас работает. Смотреть лучше всего в отладчике.
И почитайте эту тему: Русские шрифты в консоли
dext0r2010
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 11
19.10.2013, 11:51  [ТС]     Сравнение русских слов #6
gazlan, вот почитал тему и решил попробовать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <Windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char otvet[256];
    char vopros[] = "Москва";
    cout << "Столица России:" << endl;
    cin >> otvet;
    if (!strcmp(otvet,vopros))
    {
        cout << "Ответ правильный" << endl;
    }
    return 0;
}
Сравнение строк проходит нормально, но вот с русским текстом ничего не получается, все "крякозябрами".
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
19.10.2013, 12:19     Сравнение русских слов #7
Через одно место...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int main(int argc,char** argv)
{  
   SetConsoleCP(866);
   SetConsoleOutputCP(866);
 
   char otvet [MAX_PATH];
   char vopros[MAX_PATH];
 
   strcpy(vopros,"Москва");
 
   char    pszDst[MAX_PATH];
 
   CharToOem("Столица России:",pszDst);
 
   cout << pszDst << endl;
   cin >> otvet;
 
   OemToChar(otvet,pszDst);
 
   if (!strcmp(pszDst,vopros))
   {
      CharToOem("Ответ правильный",pszDst);
      
      cout << pszDst << endl;
   }
 
   return 0;
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 12:40     Сравнение русских слов #8
Цитата Сообщение от dext0r2010 Посмотреть сообщение
Сравнение строк проходит нормально, но вот с русским текстом ничего не получается, все "крякозябрами".
В свойствах консоли, шрифт Lucida Console, выбран? Среда какая?
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
19.10.2013, 13:04     Сравнение русских слов #9
dext0r2010,

Не по теме:

Не забудьте сделать тогда уж несколько вариантов ответа: "Москва", "москва", "масква"и тд. В наше время этим грешат не только школьники. А насчет дат тем более, там возможны разные варианты написания, как числами, так и словами.

dext0r2010
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 11
19.10.2013, 13:56  [ТС]     Сравнение русских слов #10
alsav22,
Цитата Сообщение от alsav22 Посмотреть сообщение
В свойствах консоли, шрифт Lucida Console, выбран? Среда какая?
Среда Visual Studio 2010. Как открыть свойства консоли я не знаю. Если вам не сложно, можете подсказать?

Добавлено через 51 секунду
Folko, я пишу научную работу, так что думаю это не понадобится.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 13:57     Сравнение русских слов #11
Установка шрифта Lucida Console
Если ОС 7, то в свойствах по умолчанию делайте.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2013, 14:47     Сравнение русских слов
Еще ссылки по теме:

Вывод и ввод русских слов - C++
Мне необходимо вводить слова на русском и чтобы,в дальнейшем,я мог их сравнивать с другими словами и выполнять ещё какие-то операции.В...

Запись в файл. Функция ввода русских слов - C++
Код дал преподаватель, не реализуется функция Readline, выдает две ошибки: Ошибка 1 error LNK2005: &quot;char * __cdecl ReadLine(char...

Поиск слов в строке состоящей из русских символов. - C++
Здравствуйте. Помогите пожалуйста с программой. Мне нужно найти местоположение слова в строке вводимой с консоли. #include &lt;iostream&gt;...

Определить, сколько строчных русских букв в наборе слов - C++
Дано файл в формате txt. А в файле набор слов. Написать программу которая определяет сколько букв а, б, в, г, д, е, ё, ж, з, и, й, к, л,...

Подсчитать количество слов, состоящих из русских букв длинной свыше 4 символов - C++
Помогите написать


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

Или воспользуйтесь поиском по форуму:
dext0r2010
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 11
19.10.2013, 14:47  [ТС]     Сравнение русских слов #12
alsav22, спасибо, помогло!
Yandex
Объявления
19.10.2013, 14:47     Сравнение русских слов
Ответ Создать тему
Опции темы

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