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

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

Войти
Регистрация
Восстановить пароль
 
General Fire
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 18
#1

Ошибка в программе сравнения слов - C++

05.01.2014, 16:51. Просмотров 299. Ответов 8
Метки нет (Все метки)

Программка переписана из учебника и по ней есть несколько заданий, однако она не работает.
#include"std_lib_facilities.h" можно заменить на
C++
1
2
3
4
5
6
7
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
inline void keep_window_open() {char ch;cin>>ch;}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include"std_lib_facilities.h"
 
 
int main()
{
   int numbword = 0;
   string prev = " ";
   string cur;
   while(cin>>cur){
                   numbword++;
                   
                              if(cur==prev){
                                           
                                            cout << "numer slova" << numbword 
                                            << "\npovtorennoe:" << cur;
                                             prev=cur;
                                         }      
                                         else cout<< "nepovtor";           
                   }
   keep_window_open();
   return 0;
}
Беда в том что слова просто не сравниваются.Если бы это били не строки, а к примеру int, то все ок(проверил).
Спасайте)Или строки вообще сравнивать нельзя?Однако в учебнике такой пример.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2014, 16:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в программе сравнения слов (C++):

Функция сравнения однокоренных слов - C++
Дан текст.как будет выглядеть функция,которая показывает, однокоренное слово или нет ?(типа bool)

Сравнения слов в двух строках - C++
Дано две строчные переменные, которые содержат по несколько слов, разделенных пробелами. Воспользовавшись указателями, определить, есть ли...

Описать процедуру сравнения двух слов - C++
описать процедуру сравнения двух слов Называйте темы информативно.

Ошибка в программе - C++
Доброе утро, уважаемые программисты. Прошу у вас помощи: выбивает ошибку. Спасибо #include &lt;iostream&gt; #include &lt;math.h&gt; using...

Ошибка в программе - C++
Доброе утро! Прошу у вас помощи с программой: не хочет работать. Буду очень благодарен за любую помощь! // ConsoleApplication1.cpp:...

Ошибка в программе - C++
Помогите разобраться с программой где ошибка. Использовать рекурсию. За ранее спасибо. #include&lt;iostream.h&gt; float tn(float,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.01.2014, 17:04 #2
Цитата Сообщение от General Fire Посмотреть сообщение
Беда в том что слова просто не сравниваются.
С пробелом сравнение (string prev = " ")? cin >> пробелы пропускает.
General Fire
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 18
05.01.2014, 17:29  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
С пробелом сравнение (string prev = " ")? cin >> пробелы пропускает.

Это как начально присваевание, первое слово он в любом случае отмечает как "неповтор".Но по идеи последующие слова он должен сравнивать, а как-то нитак(

Добавлено через 12 минут
Т.е. пробел можно и не присваивать, но опять же учебник...(не знаю как редактировать сообщения)
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.01.2014, 17:31 #4
Цитата Сообщение от General Fire Посмотреть сообщение
Но по идеи
По идее, код никогода не зайдёт в if(), потому что cin >> никогда не считает пробел, потому что:
Цитата Сообщение от alsav22 Посмотреть сообщение
cin >> пробелы пропускает.
General Fire
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 18
05.01.2014, 17:39  [ТС] #5
но ведь не вводятся пробелы.Просто вводится к примеру буква, затем еще одна и если они одинаковы.Я не догоняю зачем пробелы.Вводится не текст, а слово.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.01.2014, 18:55 #6
Цитата Сообщение от General Fire Посмотреть сообщение
Я не догоняю зачем пробелы.
И я не догоняю, зачем введённое сравнивается с пробелом?
C++
1
string prev = " ";
В prev что? Строка с пробелом. Потом в коде:
C++
1
if(cur==prev)
Введёное в cur с чем сравнивается? Правильно, со строкой с пробелом.
General Fire
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 18
05.01.2014, 19:19  [ТС] #7
Первый раз да, но затем слова будут сравниваться друг с другом.
Первый раз как-бы пробел это типо не слово вообще.
Потом сравнение слов не происходит, вот в чем беда.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.01.2014, 23:47 #8
Цитата Сообщение от General Fire Посмотреть сообщение
Потом сравнение слов не происходит, вот в чем беда.
Беда в другом... От темы отписался.
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
05.01.2014, 23:59 #9
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
#include<iostream>
#include<string>
using namespace std;
 
int main()
{
    int numbword = 0;
    string prev = " ";
    string cur;
    while (cin >> cur)
    {
        numbword++;
        if (cur == prev)
        {
            cout << "numer slova = " << numbword << endl << "povtorennoe: " << cur << endl;
            prev = cur;
        }
        else if (prev != " ")
        {
            cout << "nepovtor" << endl;
            prev = cur;
        }
        else
            prev = cur;
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2014, 23:59
Привет! Вот еще темы с ответами:

Ошибка в программе - C++
Проблема такая - не создает файл, в который оно должно сохранить результати. Вначале когда ехе запускаеш надо английскими ввести &quot;no&quot; -...

ошибка в программе - C++
Пожогите. пожалуйста, решить проблему... Уже все перепробовал, но ошибка осталась #include &lt;iostream&gt; #include &lt;windows.h&gt; using...

1 ошибка в программе - C++
#include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main (); { int t, i, num ; for(t=0; t&lt;5; ++t) ...

ошибка в программе - C++
я скачал Borland c при компиляции он мне выдает такую ошибку помогите кто знает, но я думаю что сама прога крива легла так как я ее...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.01.2014, 23:59
Ответ Создать тему
Опции темы

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