Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/64: Рейтинг темы: голосов - 64, средняя оценка - 4.75
7 / 7 / 4
Регистрация: 01.10.2015
Сообщений: 327

Найти среднюю длину слов в строке

20.02.2017, 17:57. Показов 12996. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, необходима помощь с заданием.
Дана строка текста, в которой слова разделены пробелами. Необходимо:
1. определить количество слов в строке;
2. найти среднюю длину слов в строке и вывести на экран слова такой длины, если их нет, то вывести сообщение «Таких слов нет»;
3. переставить слова в строке в обратном порядке, затем вывести на экран предложение.
1-й и 3-й пункт я сделал, соответственно нужна помощь со 2-ым.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h>
#include <string>
 
using namespace std;
 
int main ()
{
    string str;
 
    str = "ololol ololo ooolllool";
    int counter = 0;
    for (int i=0;i<str.size();i++)
    if (str[i]==' ') counter++;
    cout << "V zadannou stroke " << counter+1 << " clov(a)" << endl;
    for (int i=str.size();i>0;i--)
    cout << str[i];
    getch();
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2017, 17:57
Ответы с готовыми решениями:

Определить среднюю длину слов в предложении
В введенном предложении определить среднюю длину слов в буквах (знаки препинания, числа и другие символы не учитывать)

Определить количество слов в тексте и среднюю длину слова
Консольное приложение Win32 Текст задачи: Дан текст, в котором слова отделяются пробелами, в конце стоит точка. Определить...

Вычислить среднее число слов в предложении и среднюю длину предложения
ввести произвольный текст. Вычислить среднее число слов в предложении и среднюю длинну предложения. :wall: :wall:

4
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
20.02.2017, 19:07
Цитата Сообщение от mazahaler Посмотреть сообщение
3-й пункт я сделал
Такое впечатление создалось из-за того, что строка имеет весьма специфический вид. Если вместо неё взять строку "one two three", то ошибка сразу станет видна.

-----
Вообще, такие задачи решаются с помощью строковых потоков (stringstream). Вот пример разбиения строки на слова:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
int main ()
{
    string s = "one two three";
    string word;
    istringstream str(s);
    while (str >> word) {
        cout << word << endl;
    }
 
   return 0;
}
Если нужно вывести слова в обратном порядке, их можно сначала поместить в вектор.
2
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
20.02.2017, 19: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
27
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <numeric>
#include <vector>
#include <iterator>
using namespace std;
int main() {
    string s {};
    getline(cin,s);
    stringstream ss(s);
    vector<string>v {istream_iterator<string>(ss),istream_iterator<string>()};
    cout<<v.size()<<endl;
    double avg=static_cast<double>(accumulate(v.cbegin(),v.cend(),0,[](const int &x, const string &s) {
        return x+s.length();
    }))/v.size();
    cout<<avg<<endl;
    if(any_of(v.cbegin(),v.cend(),[&avg](const string &s) { return s.length()==avg; })) {
        copy_if(v.cbegin(),v.cend(),ostream_iterator<string>(cout," "),[&avg](const string &s) {
            return s.length()==avg;
        });
    }
    else cout<<"There are not this words"<<endl;
    cout<<endl;
    copy(v.crbegin(),v.crend(),ostream_iterator<string>(cout," "));
}
1
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
20.02.2017, 19:28
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
#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>
 
    int main (){
        
        setlocale(LC_ALL, "rus");
 
        register unsigned int count_word (0); // Слова
        register unsigned int count_letter (0); // Буквы
        std::string strone = "hello this world, you you are so beautiufl"; // Строка один
        std::string strtwo; // Пустая строка.
        std::istringstream str (strone);
 
        while (str >> strtwo){ // Подчитываем количесво строк.
            count_word ++;
            }
        
        for (int i(0); strone[i]; i++){
            
            strone[i] == ' ' ? false : count_letter ++;
        }
 
        std::cout << "Количество слов: "
                  << count_word
                  << std::endl
                  << "Количество букв: "
                  << count_letter
                  << std::endl
                  << "Среднее количество букв в слове: "
                  << count_letter/count_word
                  << std::endl;
 
 
        system ("pause");
        return 0;
    }
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.02.2017, 19:40
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <iterator>
#include <numeric>
#include <sstream>
#include <string>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
 
    std::istringstream ist(str);
    using input_str = std::istream_iterator<std::string>;
    size_t num = 0, sum = std::accumulate(input_str(ist), input_str(), size_t(0),
        [&num](const size_t x, const std::string &str)
    {
        ++num;
        return x + str.length();
    });
    if (num)
        std::cout << static_cast<double>(sum) / num << std::endl;
}
Добавлено через 1 минуту
Цитата Сообщение от Photofenix Посмотреть сообщение
register
deprecated в C++17
Да и в текущем стандарте мало чем полезно для данного контекста.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2017, 19:40
Помогаю со студенческими работами здесь

Задается произвольный текст, Вычислить среднюю длину слов текста и вывести ее на экран
Задается произвольный текст, содержащий не более 10 строк, в каждой строке не бо-лее 80 символов. Вычислить среднюю длину слов текста и...

Найти среднюю длину слов в строке
Пр., которая найдет среднюю длину слов в строке и выведет ее на экран?

Вычислить среднюю длину слов в каждой строке
помогите пожалуйста бедной девочке составить программу, которая вычисляет срелнюю длину слов в каждой строке файла и выводит в новый файл...

В каждой строке файла подсчитать среднюю длину слов
Дан текстовый файл. В каждой строке файла подсчитать среднюю длину слов. В новый файл записать слова с длиной большей и равной средней.

В текстовых файлах надо найти среднюю длину слов
Дан текстовый файл, в котором надо посчитать среднюю длину слов, используя функцию или процедуру. Прошу помощи, с такими комплексными есть...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru