0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
1

Определить количество слов в строке

20.12.2016, 09:45. Показов 6970. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане!
Будучи первокурсником выполнял лабораторные работы по C++. И наткнулся на непонятки.
Помогите разобраться. Если можно, то попроще.
P.S.
Зная традиции форума заранее скажу, что:
1) учебника по информатике нет;
2) поиск нужного результата не дал.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2016, 09:45
Ответы с готовыми решениями:

Cтрока: Определить количество средних слов в строке и какое из слов начинается на большую по коду букву
Определить количество средних слов в строе и какое из слов начинается на большую по коду букву. ...

В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).

Определить количество слов в строке С++
Как в С++ определить количество слов строке при том, что словом называется только слово, состоящее...

Определить количество слов в строке
Как в С++ определить количество слов строке при том, что словом называется только слово, состоящее...

21
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.12.2016, 10:03 2
Лучший ответ Сообщение было отмечено Maxim Prishchepa как решение

Решение

Цитата Сообщение от markusha Посмотреть сообщение
Зная традиции форума заранее скажу, что
"...традиции форума не знаю, прикреплённые темы не смотрел, поиском пользоваться не умею, правила не читал, техзадание внятно формулировать не умею. Люди добрые помогите, кто чем может". Классика.

Добавлено через 7 минут
 Комментарий модератора 
markusha, внятно сформулируйте техзадание (см. правила форума, пункт 4.7). Своим темам давайте адекватные названия (см. правила форума, пункт 4.3). Исходный код скопируйте непосредственно в тело сообщения (см. правила форума, пункт 5.18), не забыв оформить его тегами (см. правила форума, пункт 4.9).
3
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
20.12.2016, 16:28  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
system("chcp 1251");
    string str;
    cout<<"Введите предложение: ";
    cin>>str;
    int size=strlen(str);// здесь выдаёт ошибку
    int counter = 0;
    for (int i=0;i<size;i++)
    if (str[i]==' ') counter++;
    cout<<"В строке" << counter+1 << " слов(а)" << endl;
    getch();
    {
Добавлено через 1 минуту
Понял, исправляюсь.
есть задание: Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов в строке.
К нему код выше.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
string str;
{
cout<<"    :";
cin>>str;
int size=strlen(str);// ошибка здесь
for(int i=0; i<size; i++)
{
if (('A'<= i && i<='Z') || ('А' <= i && i<='Я') )
str[0] = tolower(str[i]);
else
str[0]=toupper(str[i]);*/
return 0;
}
Добавлено через 1 минуту
Создайте функцию, которая изменяет регистр строки на противоположный, т.е. строчные буквы на заглавные и наоборот. Функция возвращает значение в виде ссылки. Продемонстрируйте работоспособность функции.
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
20.12.2016, 16:30 4
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

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
#include <string>
#include <sstream>
#include <vector>
 
void split(const std::string &s, char delim, std::vector<std::string> &elems) {
    std::stringstream ss;
    ss.str(s);
    std::string item;
    while (std::getline(ss, item, delim)) {
        elems.push_back(item);
    }
}
 
 
std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, elems);
    return elems;
}
 
main()
{
       cout << split("my string have 5 words", " ").size();  
}
2
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
20.12.2016, 16:31  [ТС] 5
Что такое vector? И можно ли попроще.
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
20.12.2016, 16:34 6
Цитата Сообщение от markusha Посмотреть сообщение
Что такое vector?
Цитата Сообщение от gru74ik Посмотреть сообщение
поиском пользоваться не умею
Цитата Сообщение от markusha Посмотреть сообщение
И можно ли попроще.
Цитата Сообщение от gru74ik Посмотреть сообщение
прикреплённые темы не смотрел
как-то так...
1
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
20.12.2016, 16:40  [ТС] 7
Понял
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.12.2016, 16:42 8
markusha, vector (а точнее - std:vector) - это такой тип из стандартной библиотеки C++. Этот тип моделирует (эмулирует?) поведение динамического массива. То есть, такого массива, в который можно легко добавлять элементы, удалять элементы и т.д. Про вектора масса информации и в книгах и в сети.
0
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
20.12.2016, 16:47  [ТС] 9
Всё-таки, не могли бы вы указать ошибку в моём коде. По синтаксису же, вроде, всё верно.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.12.2016, 16:49 10
Цитата Сообщение от markusha Посмотреть сообщение
указать ошибку в моём коде
markusha, что Вы пытаетесь сделать вот тут:
C++
1
int size=strlen(str);
?
Сишной функции strlen, в качестве аргумента принимающей сишные строки (массивы типа char, заканчивающиеся терминальным нулём), пытаетесь передать строку типа std::string? Почему бы тогда не начать заправлять автомобиль апельсиновым соком, а поутру выпивать стаканчик бензина?
0
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
20.12.2016, 16:51  [ТС] 11
Посчитать количество символов в строке. и записать это число в переменную size которая понадобиться в for
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
20.12.2016, 16:53 12
Цитата Сообщение от markusha Посмотреть сообщение
Всё-таки, не могли бы вы указать ошибку в моём коде.
strlen
особое внимание обращайте на типы данных которые метод принимает и которые метод возвращает
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.12.2016, 16:54 13
markusha, если работаете с плюсовыми строками, то пользуйтесь плюсовыми же функциями и функциями-членами. Размер плюсовой строки находится так:
C++
1
size_t str_size = str.size();
0
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
20.12.2016, 16:57  [ТС] 14
качестве аргумента принимающей сишные строки...... ....пытаетесь передать строку типа std::string?


так в чём же ошибка?

Добавлено через 43 секунды
Понял, сейчас попробую.
0
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
20.12.2016, 16:59 15
Цитата Сообщение от markusha Посмотреть сообщение
так в чём же ошибка?
В том, что
Цитата Сообщение от markusha Посмотреть сообщение
сишные строки
не то же самое, что и
Цитата Сообщение от markusha Посмотреть сообщение
строку типа std::string
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.12.2016, 17:00 16
markusha, если же хотите непременно использовать сишные функции, то передавайте в них корректные аргументы:
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <cstring>
 
int main()
{
    const char * cstr = "String in C-style."; // <--- это сишная строка
    std::cout << "Size: " << strlen( cstr );
}
Цитата Сообщение от gru74ik Посмотреть сообщение
если работаете с плюсовыми строками, то пользуйтесь плюсовыми же функциями и функциями-членами
Вот:
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <string>
 
int main()
{
    std::string str = "String in C++-style."; // <--- это плюсовая строка
    std::cout << "Size: " << str.size();
}
0
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
20.12.2016, 17:01  [ТС] 17
C++
1
2
3
4
5
6
7
8
9
10
11
12
{
    system("chcp 1251");
    string str; int size;
    cout<<"Введите предложение: ";
    cin>>str;
    size_t str_size = str.size();
    int counter = 0;
    for (int i=0;i<size;i++)
    if (str[i]==' ') counter++;
    cout<<"В строке" << counter+1 << " слов(а)" << endl;
    getch();
    {
Добавлено через 24 секунды
Воспользовался первым советом, не помогло.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.12.2016, 17:04 18
markusha, для того, чтобы пользователь мог ввести строку с пробелами, надо использовать не std::cin, а std::getline():
C++
1
2
3
4
5
6
7
8
9
// вместо:
    std::cout<<"Введите предложение: ";
    std::string str;
    std::cin>>str;
 
// надо:
    std::cout<<"Введите предложение: ";
    std::string str;
    std::getline( std::cin, str );
0
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 38
20.12.2016, 17:08  [ТС] 19
Что-то у меня ничего не работает.((((
P.S.
Уточните, пожалуйста, в правилах сказано, что аккаунт не удаляется. В смысле администрацией, пользователем или вообще?
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
20.12.2016, 17:08 20
Цитата Сообщение от markusha Посмотреть сообщение
вообще
Вообще.
0
20.12.2016, 17:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2016, 17:08
Помогаю со студенческими работами здесь

Определить количество слов в строке
Люди помогите пожалуйста бедной девушке... Дана строка текста, в которой слова разделены...

Определить количество слов в строке
Задачка в том что вывести сколько слов в строке, нужно чтобы ёщо разделяло слова запятыми, ну и...

Определить количество слов в строке
Здравствуйте. Совсем не знаю как задачу решить.... На вход программы поступает строка текста, в...

Определить количество слов в строке.
Здравствуйте,уважаемые форумчане. Имею следующую задачу: Введите с клавиатуры символьную строку и...

Определить количество слов в строке
определить количество слов в строке, если строка представляет собой набор символов разделенных...

Определить количество слов в первой строке
Дана строка, содержащая пробелы. Найдите, сколько в ней слов (слово – это последовательность...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru