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

Вычислить количество слов в заданной строке, начинающихся и заканчивающихся 'W'

26.12.2014, 17:43. Показов 3323. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо написать прогу: Дана строк S, вывести количество слов начинающихся и заканчивающихся 'W'
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.12.2014, 17:43
Ответы с готовыми решениями:

Определить количество слов в каждой строке , начинающихся на ‘А’ и заканчивающихся на “ и”
Определить количество слов в каждой строке , начинающихся на ‘А’ и заканчивающихся на “ и” #include <stdio.h> #include...

В заданной строке определить количество слов, начинающихся и заканчивающихся на одну и ту же букву
"В заданной строке определить количество слов, начинающихся и заканчивающихся на одну и ту же букву" и "В заданном массиве...

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

10
205 / 142 / 57
Регистрация: 25.12.2014
Сообщений: 447
26.12.2014, 18:05
А что такое слово? Нужно задать из каких символов может состоять слово (например, только из букв A-Z,a-z). Тогда слово-непрерывная последовательность таких символов, которая ограничена или концами строки или небуквенным символом.
Нам нужны только слова с буквы W. Поэтому можно просматривать строку слева направо и зафиксировать момент, когда после небуквенного символа встретился W (это значит пошло нужно нам слово). Потом нужно пропускать все буквенные символы, пока не встретится небуквенный или конец строки. Если последний буквенный был при этом W, то увеличиваем счетчик. Так продолжаем, пока строка не кончится.
Вот такой алгоритм, если просматривать строку по символам.
0
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 23
26.12.2014, 19:05  [ТС]
Цитата Сообщение от TrueTerm Посмотреть сообщение
Нужно задать из каких символов может состоять слово (например, только из букв A-Z,a-z)
Только буквы a-z в различных местах с пробелами. Получаются слова. Надо найти количество таковых начинающихся и заканчивающихся с w
Пример. Вводим: ditjwkvrj hrbt rj wjrhw vjf wutw wrw fjvj wjgu
Выводит: 3
Цитата Сообщение от TrueTerm Посмотреть сообщение
Поэтому можно просматривать строку слева направо и зафиксировать момент, когда после небуквенного символа встретился W
Я делал так, что просматриваем, как только встречается пробел смотрим следующий символ если он w то... а вот дальше проблема. Помоги плиз сделать так
Цитата Сообщение от TrueTerm Посмотреть сообщение
Поэтому можно просматривать строку слева направо и зафиксировать момент, когда после небуквенного символа встретился W (это значит пошло нужно нам слово). Потом нужно пропускать все буквенные символы, пока не встретится небуквенный или конец строки. Если последний буквенный был при этом W, то увеличиваем счетчик. Так продолжаем, пока строка не кончится.
Добавлено через 52 минуты
Хелп плииз...
0
205 / 142 / 57
Регистрация: 25.12.2014
Сообщений: 447
26.12.2014, 19:24
Лучший ответ Сообщение было отмечено SEO как решение

Решение

Вот основная часть проги
C++
1
2
3
4
5
6
7
8
9
10
11
w=false; // слово не началось 
count=0;
for(int i=0;i<strlen(st);i++) //цикл по всей строке
 {
 if(!w && st[i]=='W') //слово началось
    w = true;
 if(w && st[i]==' ' ){ //слово закончилось
    w=false;
    if(st[i-1]== 'W') count++;
}
if(w && st[i-1]== 'W') count++; //учтём последнее слово
На машине не проверял, могут быть опечатки
1
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 23
26.12.2014, 19:31  [ТС]
TrueTerm, большое спасибо!
0
205 / 142 / 57
Регистрация: 25.12.2014
Сообщений: 447
26.12.2014, 19:38
Вот уже опечатка - в строке 10 надо }} вместо }
1
Заблокирован
26.12.2014, 20:33
Есть код для слов начинающихся с W
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 <string>
//Дана строк S, вывести количество слов начинающихся 'W'//
int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
    string S;
    cout << "Введите строку: ";
    getline(cin, S);
    system("cls");
    cout << "Вы ввели строку: \n";
    cout << S << endl;
    int i = 0, count = 0;
    while (i < S.size())
    {
        if (S[i] == ' ' && S[i + 1] == 'W')
        {
            count++;
        }
        else if ((S[i] == 'W') && (i == 0))
        {
            count++;
        }
        i++;
    }
    cout << "Кол-во слов на букву W: " << count << endl;
    system("pause");
    return 0;
}
Добавлено через 35 минут
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
#include <iostream>
#include <string>
//Дана строк S, вывести количество слов начинающихся 'W'//
int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
    string S;
    cout << "Введите строку: ";
    getline(cin, S);
    system("cls");
    cout << "Вы ввели строку: \n";
    cout << S << endl;
    int i = 0, count = 0;
    while (i < S.size())
    {
        int q = 1;
        if (S[i] == ' ' && S[i + 1] == 'W')
        {
            while (S[i + q] != ' ')
            {
                q++;
                if ((i + q) > S.size())
                {
                    break;
                }
            }
            if (S[i + q - 1] == 'W')
            {
                count++;
            }
        }
        i++;
    }
 
    cout << "Кол-во слов на букву W: " << count << endl;
    system("pause");
    return 0;
}
Сделал)
Но тут одна проблемка - я не учёл случай когда слово стоит в самом начале строки, и случай когда буквой "W" строка заканчивается
Сами доделаете?
2
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 23
28.12.2014, 12:45  [ТС]
Цитата Сообщение от R0man Посмотреть сообщение
Но тут одна проблемка - я не учёл случай когда слово стоит в самом начале строки, и случай когда буквой "W" строка заканчивается
Сами доделаете?
В этом и была проблема. Если не сложно, доделайте пожалуйста

Добавлено через 23 часа 11 минут
R0man, поможете доделать?
0
Заблокирован
28.12.2014, 13:00
Уж извините, заказ на фрилансе взял, занят. Постараюсь как время найду доделать

Добавлено через 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
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <string>
//Дана строк S, вывести количество слов начинающихся 'W'//
int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
    string S;
    cout << "Введите строку: ";
    getline(cin, S);
    system("cls");
    cout << "Вы ввели строку: \n";
    cout << S << endl;
    int i = 0, count = 0;
    char last = S[S.size() - 1];
    while (i < S.size())
    {
        int q = 1;
        if ((S[i] == ' ' && S[i + 1] == 'W') || (S[i] == 'W' && S[i+1] != ' '))
        {
            while (S[i + q] != ' ')
            {
                q++;
                if ((i + q) > S.size())
                {
                    break;
                }
            }
            if (S[i + q - 1] == 'W')
            {
                count++;
            }
            if (last == 'W')
            {
                count++;
                break;
            }
        }
        i++;
    }
 
    cout << "Кол-во слов на букву W: " << count << endl;
    system("pause");
    return 0;
}
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
28.12.2014, 13:02
SEO, добавьте к программе из сообщения 7 до цикла while(i < S.size() ) это:
C++
1
2
if( S[0] == 'w' || S[0] == 'W' )
     ++count;
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
28.12.2014, 13:36
Цитата Сообщение от R0man Посмотреть сообщение
Хотя вроде сделал быстренько, проверьте)
Ваш вариант не поймет,если слово будет состоять из одной буквы W
http://ideone.com/7ZmsxY

Набросал через регулярки,но на IDEONE корректно запустить не смог:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <regex>
 
int main ()
{
std::cout<<"Input string"<<std::endl;
std::string s;
std::getline(std::cin,s);
 
std::smatch m;
std::regex e ("\\b(W(?:\\w*?W)??)\\b");
int count=0;
 
  while (std::regex_search (s,m,e)) {
    count++;
    s = m.suffix().str();
  }
 std::cout<<"Count = "<<count<<std::endl;
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.12.2014, 13:36
Помогаю со студенческими работами здесь

Функция: определить в строке количество слов, заканчивающихся заданной буквой
Необходимо сделать программу, где пользователь вводит текст и букву. Дальше через функцию надо вывести кол-во букв заканчивающихся. Заранее...

Определить в строке количество слов, начинающихся с заданной буквы
Строка текста содержит слова, пробелы, знаки препинания. Текст размещен в одной или нескольких строках. Перенос слов со строки на строку...

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru