Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 14.10.2016
Сообщений: 33

Найти общее количество слов и количество слов на букву ''с''

15.12.2016, 17:38. Показов 1168. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выдает ошибку, что kol неинициализироанная переменная
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 "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <locale>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int i = 0,j;
    char s[80],n,k,kol;
    cout << "Введите строку: \n";
    cin >> s;
    while (s[i] != EOF)
    {
        if (s[i] == ' ')
            i++;
        else
        {
            n = i;
            do 
                i++;
            while (s[i] != ' '&&s[i] != EOF);
            k = i;
            kol++;
            if (s[n] == 'с'&&k - n > 4)
            {
                for (j = n; j < k; j++)
                    cout << s[n];
            }
        }
    }
    cout << "Количество всех слов" <<kol;
    system("pause");
    return 0;
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2016, 17:38
Ответы с готовыми решениями:

Найти количество слов в словаре, если известно количество страниц, количество слов на странице и средняя длина слова
помогите с программой, которая выполняет эти расчеты: В русско-английском словаре 948 страниц, на каждой странице в среднем 30 слов. Каждое...

Определить общее количество слов, общее количество предложений в тексте
Обработка текста. Определить общее количество слов, общее количество предложений в тексте. Определить: Количество слов, одновременно...

Посчитать общее количество слов и определить, сколько слов в этом тексте состоит из двух символов
1) Заданы: массив наименований продукции и соответствующие ему данные плановой рентабельности (RP), фактической цены реализации (C) и...

18
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
15.12.2016, 17:42
ну так ты ее инициализируй, в чем проблема?
0
0 / 0 / 0
Регистрация: 14.10.2016
Сообщений: 33
15.12.2016, 17:48  [ТС]
Другая проблема, он не выводит все слова начинающиеся с буквы ''с'' и не выводит количество всех слов, а выводит только количество слов на букву ''с''
0
5 / 5 / 1
Регистрация: 20.04.2015
Сообщений: 27
15.12.2016, 17:48
Цитата Сообщение от anrip Посмотреть сообщение
char s[80],n,k,kol;
она инициализирована как символ. пропиши ее в int
0
0 / 0 / 0
Регистрация: 14.10.2016
Сообщений: 33
15.12.2016, 17:53  [ТС]
Другая проблема, он не выводит все слова начинающиеся с буквы ''с'' и не выводит количество всех слов, а выводит только количество слов на букву ''с''
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
15.12.2016, 17:59
Количество слов в строке можно посчитать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
  std::string str;
  getline(std::cin, str);
  
  std::cout << "Word: " << count(str.begin(), str.end(), ' ') + 1 << std::endl;
 
  return 0;
}
0
0 / 0 / 0
Регистрация: 14.10.2016
Сообщений: 33
15.12.2016, 18:23  [ТС]
Не выводит все слова начинающиеся с буквы ''с'' и не выводит количество всех слов, а выводит только количество слов на букву ''с''
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
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <locale>
#include <string>
#include <algorithm>
 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int i = 0,j,kol=0;
    char s[1000],n,k;
    cout << "Введите строку: \n";
    cin >> s;
    while (s[i] != EOF)
    {
        if (s[i] == ' ')
            i++;
        else
        {
            n = i;
            do 
                i++;
            while (s[i] != ' '&&s[i] != EOF);
            k = i;
            kol++;
            if (s[n] == 'с'&&k - n > 4)
            {
                for (j = n; j < k; j++)
                    cout << s[n];
            }
        }
    }
    cout << "Количество всех слов" <<kol;
    system("pause");
    return 0;
 
}
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
15.12.2016, 18:35
anrip, поясните, пожалуйста, что вам нужно вывести. Я напишу программу.
0
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
15.12.2016, 18:37
Nemovok, всегда можно ввести 10 пробелов подряд между 2 словами
0
0 / 0 / 0
Регистрация: 14.10.2016
Сообщений: 33
15.12.2016, 18:39  [ТС]
Fixer_84, нужно вывести все слова с буквы "c", которые содержат более 4 символов, и количество всех слов
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
15.12.2016, 18:40
Количество слов в строке можно посчитать вот так:
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>());
}
Добавлено через 33 секунды
Цитата Сообщение от JIawliet Посмотреть сообщение
всегда можно ввести 10 пробелов подряд между 2 словами
или например ввести пустую строку
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
15.12.2016, 18:41
Цитата Сообщение от JIawliet Посмотреть сообщение
всегда можно ввести 10 пробелов подряд между 2 словами
Редко такое видел)
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
15.12.2016, 18:48
Цитата Сообщение от anrip Посмотреть сообщение
нужно вывести все слова с буквы "c", которые содержат более 4 символов, и количество всех слов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
 
int main()
{
    const std::string str = "Eniki beniki celi cvareniki";
    std::istringstream ist(str);
    size_t counter = 0;
    std::copy_if(std::istream_iterator<std::string>(ist), std::istream_iterator<std::string>(),
        std::ostream_iterator<std::string>(std::cout, "\n"), [&counter](const std::string &s)
        {
            counter++;
            return s.front() == 'c' && s.length() >= 4;
        });
    std::cout << counter << std::endl;
}
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.12.2016, 18:57
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
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::vector<std::string> allWords
    { 
        std::istream_iterator<std::string>(std::cin), 
        std::istream_iterator<std::string>() 
    };
    
    auto count = std::count_if(allWords.begin(), allWords.end(),
        [] (const std::string& str)
        {
            if( str.front() == 'c' && str.size() > 4 )
            {
                std::cout << str << "\n";
                return true;
            }
            return false;
        }
    );
    
    std::cout 
        << "Count greater then four letter in word: " << count 
        << "\nCount all words: " << allWords.size() << "\n";
}
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
s.length() >= 4;
Цитата Сообщение от anrip Посмотреть сообщение
содержат более 4 символов
Всё-таки строгое неравенство получается, мне кажется.

0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
15.12.2016, 19:11
anrip, вот мой вариант. Без итераторов.

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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    int k;
    string a, b;
    cout << "Введите строку (ENG):" << endl;
    getline(cin, a);
    a = a + ' ';
    cout << "Искомые слова:" << endl;
    k = 0;
    for (int i = 0; i < a.length(); i++)
    {
        b += a[i];
        if ((!(isalpha(a[i]))))
        {
            b.pop_back();
            if (b != "")
            {
                k++;
                if ((b[0] == 'c') && (b.length() > 4))
                {
                    cout << b << endl;
                }
            }
            b = "";
        }
    }
    cout << "Общее количество слов: " << k << endl;
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 14.10.2016
Сообщений: 33
15.12.2016, 19:41  [ТС]
Fixer_84, а как сделать на русском?
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
15.12.2016, 19:53
anrip, я у себя в Dev-Cpp отдельные функции создавал для работы с русским текстом. Я обычно не работаю с русским текстом. Попробуйте подключить setlocale(LC_ALL, "Russian"); внутри функции main(). На разных компьютерах по-разному.
0
0 / 0 / 0
Регистрация: 14.10.2016
Сообщений: 33
15.12.2016, 19:56  [ТС]
Fixer_84, я так пробовал, не работает
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
15.12.2016, 20:38
anrip, поспрашивайте еще на форуме. Я особо этой проблемой не задавался.

Добавлено через 2 минуты
anrip, вот функция, которую я писал. Попробуйте использовтать ее.

bool IsRusAlpha(char ch)
{
if (((int)ch <= -1) && ((int)ch >= -32) || ((int)ch != -72))
{
return true;
}
else if (((int)ch <= -64) && ((int)ch >= -33) || ((int)ch != -88))
{
return true;
}
return false;
}

Добавлено через 8 минут
anrip, кажется, получилось. Держите код для русского текста.

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
43
44
45
46
47
48
49
#include <iostream>
#include <string>
 
using namespace std;
 
bool IsRusAlpha(char ch)
{
    if (((int)ch <= -1) && ((int)ch >= -32) || ((int)ch != -72))
    {
        return true;
    }
    else if (((int)ch <= -64) && ((int)ch >= -33) || ((int)ch != -88))
    {
        return true;
    }
    return false;
}
 
int main()
{
    int k;
    string a, b;
    cout << "Введите строку (RUS):" << endl;
    getline(cin, a);
    a = a + ' ';
    cout << "Искомые слова:" << endl;
    k = 0;
    for (int i = 0; i < a.length(); i++)
    {
        if (IsRusAlpha(a[i]))
            b += a[i];
        if (isprint(a[i]))
        {
            b.pop_back();
            if (b != "")
            {
                k++;
                if ((b[0] == 'с') && (b.length() > 4))
                {
                    cout << b << endl;
                }
            }
            b = "";
        }
    }
    cout << "Общее количество слов: " << k << endl;
    system("pause");
    return 0;
}
Добавлено через 19 минут
anrip, вы проверяли последнее сообщение? У меня с русским текстом все заработало...Отпишитесь, пожалуйста, как у вас.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2016, 20:38
Помогаю со студенческими работами здесь

Найти количество слов содержащих только символы латинского алфавита, а среди них количество слов с гл. и согл
Найти количество слов содержащих только символы латинского алфавита, а среди них количество слов с равным количеством гласных и согласных...

Дан текст, найти количество слов и количество слов, у которых первый и последний символ совпадают
Помогите пожалуйста, выполнить задание. Дан текст из N символов. Группы символов, расположенные между пробелами и не содержащие...

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

Найти количество слов на букву «Б»
Вводится текст. Конец ввода точка. Найти количество слов на букву «Б» Задачу нужно решить при помощи типа INTEGER и CHAR (другие типы...

Найти количество слов, начинающихся на букву н
Есть задача.Дана строка,найти кол-во слов,начинающихся на букву н.Пишем код и тупим,как правильно в if написать всё? #include...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru