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

Определить количество слов, начинаются и заканчиваются одной и той же буквой

23.01.2014, 03:20. Показов 11042. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими).

Определить количество слов, начинаются и заканчиваются одной и той же буквой.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2014, 03:20
Ответы с готовыми решениями:

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

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

Найти количество слов, которые начинаются и заканчиваются одной и той же буквой
Проблема(

22
 Аватар для contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
23.01.2014, 04:18
Не знаю, есть ли в С++ обычном регулярные выражения, но, вообще, с ними проще всего это сделать.

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

Добавлено через 4 минуты

Не по теме:

У тебя что там курсач или самоэкзамен? :)

0
 Аватар для cooller
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
23.01.2014, 04:20
Iren1,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include<sstream>
#include<string>
 int main()
{
    std::string str;
    std::getline(std::cin,str);
    std::stringstream ss(str);
    size_t CountWord(0);
    for(std::string word;ss>>word;)
        if(word.begin() == word.end() - 1)
            CountWord++;
    std::cout<<"Number of words:"<<CountWord;
}
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
23.01.2014, 04:39
Как вариант:
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
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <windows.h>
 
using namespace std;
 
int main(){
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
char str[] = " страус страусу   око   не вылечит ";
 
char seps[]   = " ,.!?\t\n";//добавьте или уберите что захотите, можно оставить " "(пробел)
 
char *token ;
int str_count=0;
char* currentStr=0;
int lenWord=0;
int count_equal=0;
token = strtok( str, seps );
 
while( token != NULL )
   {
cout<<token<<endl;  
lenWord=strlen(token);
if(token[0] == token[lenWord-1]){
cout<<"found "<<token<<endl; 
    count_equal++;
}
      token = strtok( NULL, seps ); 
   }
 
cout<<"Найдено "<<count_equal<<" слов(а)";
 
cout<<endl;
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 11:35  [ТС]
Цитата Сообщение от contedevel Посмотреть сообщение
Добавлено через 4 минуты

Не по теме:

У тебя что там курсач или самоэкзамен? :)

у меня погружение в мир программирования.... спасибо вам))

Добавлено через 6 минут
а как сделать, чтобы строчку можно было вводить самостоятельно с клавиатуры?

Добавлено через 45 секунд
и у меня чет русские буквы иероглифами отображаются(((
0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
23.01.2014, 11:39
Цитата Сообщение от Iren1 Посмотреть сообщение
а как сделать, чтобы строчку можно было вводить самостоятельно с клавиатуры?
Цитата Сообщение от IGPIGP Посмотреть сообщение
C++
1
char str[] = " страус страусу * око * не вылечит ";
C++
1
2
char str[256];
gets(str);
Цитата Сообщение от Iren1 Посмотреть сообщение
и у меня чет русские буквы иероглифами отображаются(((
Русские шрифты в консоли
1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 11:42  [ТС]
я вставила такую строку
C
1
2
3
4
char str[10];
 
printf("vvedit stroky sumvoliv: ");
gets(str);
вместо
C
1
 char str[] = " страус страусу   око   не вылечит ";
оно запускаеться.. а когда закрываешь программу(черненькое окошко))) оно предлагает брейк , и еще какую то бяку...

и как сделать, чтобы в конце.. когда он пишет..найдено слово..столько то..чтобы оно его еще вывело на экран?
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
23.01.2014, 11:46
cooller_94, малость подправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include<sstream>
#include<string>
 int main()
{
    std::string str;
    std::getline(std::cin,str);
    std::stringstream ss(str);
    size_t CountWord(0);
    for(std::string word;ss>>word;)
        if(*(word.begin()) == *(word.end() - 1)
            && (word.begin() != word.end() - 1))
            CountWord++;
    std::cout<<"Number of words:"<<CountWord;
}
1
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
23.01.2014, 11:48
Цитата Сообщение от Iren1 Посмотреть сообщение
и как сделать, чтобы в конце.. когда он пишет..найдено слово..столько то..чтобы оно его еще вывело на экран?
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
#include <Windows.h>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::string userString;
    std::cout << "Введите строку: " << std::endl;
    std::getline(std::cin, userString);
 
    std::string currentWord;
    std::stringstream stream(userString);
    std::vector <std::string> resultWords;
    while (stream >> currentWord) {
        if (currentWord.front() == currentWord.back()) {
            resultWords.push_back(currentWord);
        }
    }
    std::cout << "Количество слов: " << resultWords.size() << std::endl;
    std::cout << "Слова: ";
    std::copy(resultWords.begin(), resultWords.end(), std::ostream_iterator <std::string> (std::cout, " "));
    std::cout << std::endl;
    
    std::system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 11:52  [ТС]
последний код 2 ошибки выбивает((
0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
23.01.2014, 11:53
Iren1, целесообразно их сюда скопировать
0
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 11:56  [ТС]
а что эта строка делает?
C
1
 char seps[]   = " ,.!?\t\n";//добавьте или уберите что захотите, можно оставить " "(пробел)
Добавлено через 1 минуту
Code
1
2
3
4
5
6
7
8
9
10
1>d:\work\fg\g.cpp(22) : error C2039: 'back' : is not a member of 'std::basic_string<_Elem,_Traits,_Ax>'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>,
1>            _Ax=std::allocator<char>
1>        ]
1>Build log was saved at "file://d:\Work\fg\Debug\BuildLog.htm"
1>fg - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
23.01.2014, 12:00
Цитата Сообщение от Iren1 Посмотреть сообщение
последний код 2 ошибки выбивает((
Все потому, что строка это не дек и не список. Да и код малость не рабчий:
Кликните здесь для просмотра всего текста

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
#include <Windows.h>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::string userString;
    std::cout << "Введите строку: " << std::endl;
    std::getline(std::cin, userString);
 
    std::string currentWord;
    std::stringstream stream(userString);
    std::vector <std::string> resultWords;
    size_t CountWord(0);
    while (stream >> currentWord) {
        if(*(currentWord.begin()) == *(currentWord.end() - 1)
            && (currentWord.begin() != currentWord.end() - 1)) {
            resultWords.push_back(currentWord);
            CountWord++;
        }
    }
 
    std::cout << "Количество слов: " << resultWords.size() << std::endl;
    std::cout << "Слова: ";
    std::copy(resultWords.begin(), resultWords.end(), std::ostream_iterator <std::string> (std::cout, " "));
    std::cout << std::endl;
 
    std::system("pause");
    return 0;
}
0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
23.01.2014, 12:03
Цитата Сообщение от Iren1 Посмотреть сообщение
а что эта строка делает?
C
1
char seps[] * = " ,.!?\t\n";//добавьте или уберите что захотите, можно оставить " "(пробел)
это символы-разделители, по которым разбивается ваша исходная строка
по поводу ошибки, попробуйте замените у меня в программе вот эту часть кода:
C++
1
2
3
4
5
    while (stream >> currentWord) {
        if (*currentWord.begin() == *(currentWord.end() - 1)) {
            resultWords.push_back(currentWord);
        }
    }
Добавлено через 2 минуты
Ilot, раз уж взялись поправлять, то убрали бы лишнее
Цитата Сообщение от Ilot Посмотреть сообщение
C++
1
size_t CountWord(0);
Цитата Сообщение от Ilot Посмотреть сообщение
C++
1
CountWord++;
1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 12:06  [ТС]
ладно.. смотрите..я пытаюсь переделать этот код
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
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <windows.h>
 
using namespace std;
 
int main()
{
  
    setlocale(LC_ALL,"Russian");
 
char str[256];
cout << "Введите строку: ";
gets(str);
 
char seps[]   = " ,.!?\t\n";//добавьте или уберите что захотите, можно оставить " "(пробел)
 
char *token ;
int str_count=0;
char* currentStr=0;
int lenWord=0;
int count_equal=0;
token = strtok( str, seps );
 
while( token != NULL )
   {
cout<<token<<endl;  
lenWord=strlen(token);
if(token[0] == token[lenWord-1]){
cout<<"found "<<token<<endl; 
    count_equal++;
}
      token = strtok( NULL, seps ); 
   }
 
cout<<"Найдено "<<count_equal<<" слов(а)";
 
cout<<endl;
system("pause");
return 0;
}
в итоге..выводит на экран..рус буквами.. введите строку..нормально пишет данную строку русс.буквами.. и строчку найдено слов...

а от сами слова дальше которые он выводит с новой сроки отдельно..выводит иероглифами((

Добавлено через 1 минуту
не ругайтесь! я за вашими мыслями не успеваю..
0
23.01.2014, 12:06

Не по теме:

Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Ilot, раз уж взялись поправлять, то убрали бы лишнее
Ладно, ладно не заметил. Зачем сразу нервничать?:)

0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
23.01.2014, 12:10
Ilot, спокоен как двери
Цитата Сообщение от Iren1 Посмотреть сообщение
а от сами слова дальше которые он выводит с новой сроки отдельно..выводит иероглифами((
поменяйте
Цитата Сообщение от Iren1 Посмотреть сообщение
C++
1
setlocale(LC_ALL,"Russian");
на
C++
1
2
    SetConsoleCP(1251);
SetConsoleOutputCP(1251);
и подключить не забудьте
C++
1
#include <Windows.h>
0
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 12:16  [ТС]
сделала так.. вообще все иероглифами выдает((
0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
23.01.2014, 12:17
Iren1, в свойствах консольного окна поменяйте шрифт на Lucida Console
0
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 12:19  [ТС]
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Iren1, в свойствах консольного окна поменяйте шрифт на Lucida Console
а это где?)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.01.2014, 12:19
Помогаю со студенческими работами здесь

Списки: подсчитать количество слов, которые начинаются и заканчиваются одной и той же буквой
Дан массив типа char, состоящий из 10 слов. Нужно описать функцию, подсчитывающую количество слов, которые начинаются и заканчиваются с...

Подсчитать количество слов списка, которые начинаются и заканчиваются одной и той же буквой
Как написать программу с функциями, которая подсчитывает количество слов списка Р, которые: а)начинаются и заканчиваются одной и той же...

Найти те слова, которые начинаются и заканчиваются одной и той же буквой
1_Символьная строка заканчивается восклицательным знаком (!). Слова в ней отделены друг от друга точкой с запятой (;). Найти те слова,...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru