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

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

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

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

20.04.2013, 18:50. Просмотров 373. Ответов 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");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2013, 18:50     почему выводит первое слово?
Посмотрите здесь:

Программа, удаляющее последнее слово, выводит первое слово. Что не так? - 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++
Даны два слова.Верно ли, что первое слово начинается на ту же букву, на которую заканчивается второе слово.

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

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

Удалить первое слово в строке - C++
Дан массив строк текста, массив разделителей нужно удалить первое слово и разделитель после в каждой строке него. вывести преобразованый...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
20.04.2013, 19:52     почему выводит первое слово? #2
  1. Строка 31: замените n на max
  2. Строка 39: замените на getline(cin, f)
hOlyNeKo
0 / 0 / 1
Регистрация: 18.04.2013
Сообщений: 20
20.04.2013, 20:05     почему выводит первое слово? #3
А вы попробуйте вывести сразу считанную строку, считывает до первого пробела.
итернал
4 / 4 / 0
Регистрация: 17.09.2012
Сообщений: 312
Завершенные тесты: 1
20.04.2013, 20:21  [ТС]     почему выводит первое слово? #4
Цитата Сообщение от anmartex Посмотреть сообщение
Строка 31: замените n на max Строка 39: замените на getline(cin, f)
результат тот же
Цитата Сообщение от hOlyNeKo Посмотреть сообщение
считывает до первого пробела.
почему считывает только до первого пробела? я тоже так думал, но я невижу негде что бы было прерывания цикла после нахождения первого пробела
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
20.04.2013, 20:24     почему выводит первое слово? #5
Цитата Сообщение от итернал Посмотреть сообщение
результат тот же
Естественно, это же просто ляп, а вы вот это примените:
Цитата Сообщение от anmartex Посмотреть сообщение
Строка 39: замените на getline(cin, f)
итернал
4 / 4 / 0
Регистрация: 17.09.2012
Сообщений: 312
Завершенные тесты: 1
20.04.2013, 20:49  [ТС]     почему выводит первое слово? #6
тю, а перед етим менял нечего не менялось и ту строку и ту
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 21:01     почему выводит первое слово?
Еще ссылки по теме:

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

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

Считывается только первое слово из строки - C++
Считываю строки из файла. Почему-то считывается только первое слово из строки. Помогите while (a != &quot;%&quot;) { file &gt;&gt; a; mass =...

Поменять местами первое и последние слово. - C++
Поменять местами первое и последние слово. помогите пожалуйста.

Поменять местами первое и последнее слово - C++
Помогите решить задачу, используя строки. В заданном тексте (слова разделены пробелами) поменять местами первое и последнее слово.


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

Или воспользуйтесь поиском по форуму:
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;
}
Yandex
Объявления
20.04.2013, 21:01     почему выводит первое слово?
Ответ Создать тему
Опции темы

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