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

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

Войти
Регистрация
Восстановить пароль
 
итернал
4 / 4 / 0
Регистрация: 17.09.2012
Сообщений: 324
Завершенные тесты: 1
#1

почему выводит первое слово? - C++

20.04.2013, 18:50. Просмотров 400. Ответов 6
Метки нет (Все метки)

подскажите пожалуйста
написал код, по идее должно искать самое длиное слово в ряде
я ишю в ряде пробел, если нахожу, проверяю n(счетчик пройденых символов)потом проверяю больше ли он максимального числа, если да, то присваиваю значения n максимальному и переменым что бы потом добавить кусок ряда, но в конце у меня всегда выводит только первое слово, какой бы длины я его не вводил, почему так? я уже переменные кучу раз просмотрел, может я не вижу чего? подскажите пожалуйста
вот код
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <string>
#include <iostream>
using namespace std;
class CSecond
{
public:
    void Reseach(string f);
};
void CSecond::Reseach(string f)
{
    int n=0;
    string bs;
    int max,k,b;
    max=0;
    for (int i=0; i<f.length();i++)
    {
        n++;
        if (f.at(i)==' ')
        {
            if (n>max)
            {
                max=n-1;
                k=i;
                b=n-1;
                n=0;
            }
        }
        
    }
    bs.append(f,(k-b),b);
    cout<<"max word have " <<n<< "symbols";\
    cout<<"And this word"<<bs;
}
void main()
{
    string s,f;
    CSecond sec;
    cout<<"enter f:";
    cin>> f;
    sec.Reseach(f);
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2013, 18:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос почему выводит первое слово? (C++):

Программа, удаляющее последнее слово, выводит первое слово. Что не так? - C++
#include &lt;iostream&gt; using namespace std; int main() { char s; int i = 0; cout &lt;&lt; &quot;stroka: &quot;; cin &gt;&gt; s; for(i =...

Почему при вводе массива из символов воспринимается только первое слово? - C++
Вот примерный код: char article; int main() { cin &gt;&gt; char; cout &lt;&lt; char; system(&quot;Pause&quot;) ...

Верно ли, что первое слово начинается на ту же букву, на которую заканчивается второе слово? - C++
Даны два слова. Верно ли, что первое слово начинается на ту же букву, на которую заканчивается второе слово?

Определить, содержит ли последнее слово строки букву, с которой начинается первое слово - C++
2.) В динамической памяти размещена строка символов. Определить, содержит ли последнее слово строки букву, с которой начинается первое...

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

Даны два слова.Верно ли,что первое слово начинается на ту же букву,на которую заканчивается второе слово (работа с символами строки) - C++
2)Даны два слова.Верно ли,что первое слово начинается на ту же букву,на которую заканчивается второе слово (работа с символами строки)

6
anmartex
...
1706 / 1199 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
20.04.2013, 19:52 #2
  1. Строка 31: замените n на max
  2. Строка 39: замените на getline(cin, f)
0
hOlyNeKo
0 / 0 / 1
Регистрация: 18.04.2013
Сообщений: 20
20.04.2013, 20:05 #3
А вы попробуйте вывести сразу считанную строку, считывает до первого пробела.
0
итернал
4 / 4 / 0
Регистрация: 17.09.2012
Сообщений: 324
Завершенные тесты: 1
20.04.2013, 20:21  [ТС] #4
Цитата Сообщение от anmartex Посмотреть сообщение
Строка 31: замените n на max Строка 39: замените на getline(cin, f)
результат тот же
Цитата Сообщение от hOlyNeKo Посмотреть сообщение
считывает до первого пробела.
почему считывает только до первого пробела? я тоже так думал, но я невижу негде что бы было прерывания цикла после нахождения первого пробела
0
anmartex
...
1706 / 1199 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
20.04.2013, 20:24 #5
Цитата Сообщение от итернал Посмотреть сообщение
результат тот же
Естественно, это же просто ляп, а вы вот это примените:
Цитата Сообщение от anmartex Посмотреть сообщение
Строка 39: замените на getline(cin, f)
1
итернал
4 / 4 / 0
Регистрация: 17.09.2012
Сообщений: 324
Завершенные тесты: 1
20.04.2013, 20:49  [ТС] #6
тю, а перед етим менял нечего не менялось и ту строку и ту
0
hOlyNeKo
0 / 0 / 1
Регистрация: 18.04.2013
Сообщений: 20
20.04.2013, 21:01 #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
29
30
31
32
33
34
35
36
#include <iostream>
#include <string>
 
using namespace std;
 
class CSecond {
public:
    void Reseach(string& f);
};
 
void CSecond::Reseach(string& f) {
    int maxl = 0, k;
 
    for (int i = 0, n = 0; i < f.length(); i++) {
        if ((f.at(i) == ' ') & (n > maxl)) {
            maxl = n;
            k = i;
            n = 0;
        }
        else n++;
    }
 
    cout << "Max word has " << maxl << " symbols\n";
    cout << "This word: " << f.substr((k - maxl), maxl);
}
 
int main() {
    string f;
    CSecond sec;
    cout << "Enter f: ";
    getline(cin, f);
    f += " ";
    sec.Reseach(f);
 
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 21:01
Привет! Вот еще темы с ответами:

Удалить первое слово - C++
удалить первое слово заданной строки. Разделителем слов считается пробел

Вывести первое слово!с++ - C++
У меня есть файл, и в нем мне нужно вывести ТОЛЬКО первые слова. Например. Роман 1996 студент Владимир 1991 викладач Лилия 1999...

Поменять первое и последние слово. - C++
Дано предложение поменять первое и последние слово. Массив char.

Строки. Перевернуть первое слово. - C++
перевернуть первое слово в строке по С++. помогите, за 30 минут нужно сделать !!!((


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

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

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