Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
SEO
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 23
#1

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

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

Надо написать прогу: Дана строк S, вывести количество слов начинающихся и заканчивающихся 'W'

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

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2014, 17:43
Ответы с готовыми решениями:

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

Количество слов, начинающихся и заканчивающихся одной буквой
#include <conio.h> #include <string.h> #include <iostream.h> #pragma...

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

Дана строка S, вывести количество слов начинающихся и заканчивающихся 'W'
Дана строка S, вывести количество слов начинающихся и заканчивающихся 'W' ...

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

10
TrueTerm
168 / 116 / 45
Регистрация: 25.12.2014
Сообщений: 384
26.12.2014, 18:05 #2
А что такое слово? Нужно задать из каких символов может состоять слово (например, только из букв A-Z,a-z). Тогда слово-непрерывная последовательность таких символов, которая ограничена или концами строки или небуквенным символом.
Нам нужны только слова с буквы W. Поэтому можно просматривать строку слева направо и зафиксировать момент, когда после небуквенного символа встретился W (это значит пошло нужно нам слово). Потом нужно пропускать все буквенные символы, пока не встретится небуквенный или конец строки. Если последний буквенный был при этом W, то увеличиваем счетчик. Так продолжаем, пока строка не кончится.
Вот такой алгоритм, если просматривать строку по символам.
0
SEO
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 23
26.12.2014, 19:05  [ТС] #3
Цитата Сообщение от 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
TrueTerm
168 / 116 / 45
Регистрация: 25.12.2014
Сообщений: 384
26.12.2014, 19:24 #4
Лучший ответ Сообщение было отмечено 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
SEO
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 23
26.12.2014, 19:31  [ТС] #5
TrueTerm, большое спасибо!
0
TrueTerm
168 / 116 / 45
Регистрация: 25.12.2014
Сообщений: 384
26.12.2014, 19:38 #6
Вот уже опечатка - в строке 10 надо }} вместо }
1
R0man
Заблокирован
26.12.2014, 20:33 #7
Есть код для слов начинающихся с 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
SEO
0 / 0 / 0
Регистрация: 21.12.2014
Сообщений: 23
28.12.2014, 12:45  [ТС] #8
Цитата Сообщение от R0man Посмотреть сообщение
Но тут одна проблемка - я не учёл случай когда слово стоит в самом начале строки, и случай когда буквой "W" строка заканчивается
Сами доделаете?
В этом и была проблема. Если не сложно, доделайте пожалуйста

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

Добавлено через 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
tnk500
114 / 118 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
Завершенные тесты: 3
28.12.2014, 13:02 #10
SEO, добавьте к программе из сообщения 7 до цикла while(i < S.size() ) это:
C++
1
2
if( S[0] == 'w' || S[0] == 'W' )
     ++count;
0
S_el
2134 / 1662 / 354
Регистрация: 15.12.2013
Сообщений: 6,603
28.12.2014, 13:36 #11
Цитата Сообщение от 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
28.12.2014, 13:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2014, 13:36

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

Дана строка символов. Найти количество слов начинающихся на A и заканчивающихся на D
Дана строка символов. Найти количество слов начинающихся на A и заканчивающихся...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru