Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651

Посчитать количество слов в строке

19.04.2018, 02:21. Показов 1918. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Нужно выяснить, пуст элемент строки или нет:
C++
1
2
3
4
string s;
for(int = 0; i < s.length; i++)
    if(s[i] != '')
        //...
В последней строке ошибка: строка в кавычках должна содержать по крайней мере один символ. Как тогда правильно сравнивать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.04.2018, 02:21
Ответы с готовыми решениями:

Посчитать количество слов в строке
Здравствуйте! Дайте пожалуйста пример функции которая считает количество слов с строке с помощью функции strtok. Number_Word (char...

Посчитать количество слов в строке
Задача такая Ввести строку символов. вывести на экран строку, посчитать количество слов в строке. :help: помогите !

Посчитать количество слов в строке
Посчитать количество слов в строке

13
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
19.04.2018, 02:24
Попробуйте '\0'
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
19.04.2018, 02:28  [ТС]
Просто прогоняется до конца строки. Это же символ конца строки...
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
19.04.2018, 02:32
Zwelenewskiy, это пустой символ null-char, который также является символом конца строки
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18234 / 14148 / 5366
Регистрация: 17.03.2014
Сообщений: 28,839
Записей в блоге: 1
19.04.2018, 02:34
Zwelenewskiy, если под "пустым" элементом ты имеешь в виду пробел, то нужно проверять так
C#
1
if(s[i] != ' ')
или так
C#
1
if(!char.IsWhiteSpace(s[i]))
Добавлено через 1 минуту
Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
Это же символ конца строки...
В некоторых языках программирования. В C#/.NET это такой же символ как и остальные.
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
19.04.2018, 02:44  [ТС]
В общем-то, проблема другая: нужно посчитать кол-во слов в строке. После первого слова цикл идет до конца строки, выходя за ее пределы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void count_words(string &s){
    string tmp;
 
    int i = 0;  
    while (i < s.length() - 1) {
        if (s[i] != ' '){
 
            while (s[i] != ' '){
                tmp += s[i];
                cout << "i = " << i << endl;
                i++;
                
            }
            cout << tmp << endl;
            tmp = "";           
        }
        else {
            cout << "i = " << i << endl;
            i++;
        } 
    }
}
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
19.04.2018, 05:31
Zwelenewskiy, у вас код относящийся к C++, а вы в ветке C#.

Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
нужно посчитать кол-во слов в строке
Для C#, можно было бы разбить текст на предложения, а уже полученные предложения с помощью Split(' ') разбить на слова. Остаётся только дело за малым - получить количество слов в массиве - Count.
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
19.04.2018, 09:14  [ТС]
Теперь тема на своем старом месте) Хотелось бы сделать разбиение на слова "ручками", без встроенных методов
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
19.04.2018, 10:07
Zwelenewskiy, слова чем нибудь разделены, кроме пробела?
0
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
19.04.2018, 10:13
Если бить string вручную, без алгоритмов, векторов и проч. - там достаточно для этого методов, типа школьным кодом как на Паскале

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
#include <iostream>
#include <string>
using namespace std;
 
int main() { 
 string s0 = "  I'm  a\ttext  from   some  words.   ";
 string c,c0,w;
 bool inword=false;
 string divs=" \t\r\n";
 string s=" "+s0+" ";
 int len = s.size(), start;
 for (int i=1; i<len; i++) {
     string c0 = s.substr(i-1,1);
     string c = s.substr(i,1);
     if (divs.find(c0)!=string::npos && divs.find(c)==string::npos) { 
         inword=true; start=i; 
     }
     if (divs.find(c)!=string::npos) {
         if (inword) {
             w = s.substr(start,i-start+1); //здесь есть очередная лексема w
             cout << w << endl;
         }
         inword = false;
     }
 }
 
 cin.sync(); cin.get(); return 0;
}
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.04.2018, 13:49
Как-то сложно всё у вас.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
 
int main()
{
    const std::string str = "eniki  beniki eli   vareniki";
    std::istringstream ist(str);
    std::cout << std::distance(std::istream_iterator<std::string>(ist), std::istream_iterator<std::string>());
}
0
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
19.04.2018, 16:43
Хотелось бы сделать разбиение на слова "ручками", без встроенных методов
...
без алгоритмов, векторов и проч.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.04.2018, 18:34
Это и есть ручками. Без алгоритмов, векторов и т.д.
Просто загнали в буфер и посчитали сколько раз смогли извлечь из буфера.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
10.05.2018, 23:22
Цитата Сообщение от ПерС Посмотреть сообщение
Хотелось бы сделать разбиение на слова "ручками", без встроенных методов
Здравствуйте! Вот один из вариантов такого разбиения:

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
#include <bits/stdc++.h> 
#include <windows.h>
 
    using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian"); //Чтобы функция isalpha() работала с русским текстом.
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string str, s;
    cout << "Enter a string:\n";
    getline(cin, str);
    cout << "\nWords after split:\n";
    str += " ";
    for (int i = 0; i < str.size(); i++) {
        s += str[i];
        if (!isalpha((unsigned char)str[i])) //Здесь условие разбиения
        {
            s.pop_back();
            if (s != "") cout << s << "\n"; //Выводим слова в столбик
            s = "";
        }
    }
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2018, 23:22
Помогаю со студенческими работами здесь

Посчитать количество слов в строке
Всем привет!Зарегался я на форуме недавно,минут 5 назад.У меня есть проблема,моя программа(внизу)должна считать сколько слов в строке.Мне...

Посчитать количество слов в строке
Здравствуйте, я не знаю в чем дело, но прога всегда выдает что в строке 1 слово. #include &lt;iostream&gt; #include &lt;string.h&gt;...

Посчитать количество слов в заданной строке
Вычислить значение f= {q}^{sin(x)} функции где q – количество символов, которые надо найти в контрольной строке Контрольная строка...

Посчитать количество слов в строке, содержащих 4 буквы
Дорогие форумчане! Пол дня воюю с этой задачей. Разобрался с решением: как сосчитать кол-во слов в общем, а вот состоящих именно из 4-х...

Посчитать количество слов в строке, оканчивающейся точкой.
имеется код, программка считает правда не слова, а пробелы) проблема в том, что если строка начинается с пробела, то значение будет...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru