Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 03:20     Определить количество слов, начинаются и заканчиваются одной и той же буквой #1
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими).

Определить количество слов, начинаются и заканчиваются одной и той же буквой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 03:20     Определить количество слов, начинаются и заканчиваются одной и той же буквой
Посмотрите здесь:

C++ Найти в тексте слова, которые начинаются и заканчиваются одной и той же буквой
Определить, сколько слов во введенном тексте начинаются и оканчиваются одной и той же буквой C++
C++ Найти те слова, которые начинаются и заканчиваются одной и той же буквой
C++ Найти количество слов, которые начинаются и заканчиваются одной и той же буквой
Определить количество слов, которые начинаются и заканчиваются одной той же буквой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 590
23.01.2014, 04:18     Определить количество слов, начинаются и заканчиваются одной и той же буквой #2
Не знаю, есть ли в С++ обычном регулярные выражения, но, вообще, с ними проще всего это сделать.

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

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

Не по теме:

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

cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
23.01.2014, 04:20     Определить количество слов, начинаются и заканчиваются одной и той же буквой #3
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;
}
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,715
Записей в блоге: 3
23.01.2014, 04:39     Определить количество слов, начинаются и заканчиваются одной и той же буквой #4
Как вариант:
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;
}
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 11:35  [ТС]     Определить количество слов, начинаются и заканчиваются одной и той же буквой #5
Цитата Сообщение от contedevel Посмотреть сообщение
Добавлено через 4 минуты

Не по теме:

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

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

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

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

и как сделать, чтобы в конце.. когда он пишет..найдено слово..столько то..чтобы оно его еще вывело на экран?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
23.01.2014, 11:46     Определить количество слов, начинаются и заканчиваются одной и той же буквой #8
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;
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
23.01.2014, 11:48     Определить количество слов, начинаются и заканчиваются одной и той же буквой #9
Цитата Сообщение от 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;
}
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 11:52  [ТС]     Определить количество слов, начинаются и заканчиваются одной и той же буквой #10
последний код 2 ошибки выбивает((
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
23.01.2014, 11:53     Определить количество слов, начинаются и заканчиваются одной и той же буквой #11
Iren1, целесообразно их сюда скопировать
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 11:56  [ТС]     Определить количество слов, начинаются и заканчиваются одной и той же буквой #12
а что эта строка делает?
C
1
 char seps[]   = " ,.!?\t\n";//добавьте или уберите что захотите, можно оставить " "(пробел)
Добавлено через 1 минуту
Код
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 ==========
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
23.01.2014, 12:00     Определить количество слов, начинаются и заканчиваются одной и той же буквой #13
Цитата Сообщение от 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;
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
23.01.2014, 12:03     Определить количество слов, начинаются и заканчиваются одной и той же буквой #14
Цитата Сообщение от 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++;
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 12:06  [ТС]     Определить количество слов, начинаются и заканчиваются одной и той же буквой #15
ладно.. смотрите..я пытаюсь переделать этот код
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 минуту
не ругайтесь! я за вашими мыслями не успеваю..
Ilot
23.01.2014, 12:06
  #16

Не по теме:

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

Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
23.01.2014, 12:10     Определить количество слов, начинаются и заканчиваются одной и той же буквой #17
Ilot, спокоен как двери
Цитата Сообщение от Iren1 Посмотреть сообщение
а от сами слова дальше которые он выводит с новой сроки отдельно..выводит иероглифами((
поменяйте
Цитата Сообщение от Iren1 Посмотреть сообщение
C++
1
setlocale(LC_ALL,"Russian");
на
C++
1
2
    SetConsoleCP(1251);
SetConsoleOutputCP(1251);
и подключить не забудьте
C++
1
#include <Windows.h>
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 12:16  [ТС]     Определить количество слов, начинаются и заканчиваются одной и той же буквой #18
сделала так.. вообще все иероглифами выдает((
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
23.01.2014, 12:17     Определить количество слов, начинаются и заканчиваются одной и той же буквой #19
Iren1, в свойствах консольного окна поменяйте шрифт на Lucida Console
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 12:19     Определить количество слов, начинаются и заканчиваются одной и той же буквой
Еще ссылки по теме:

C++ Найти слова, которые начинаются и заканчиваются одной и той же буквой (перевести из Паскаля в С++)
C++ Подсчитать количество слов списка, которые начинаются и заканчиваются одной и той же буквой
Найти в тексте слова, которые начинаются и заканчиваются одной и той же буквой C++

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

Или воспользуйтесь поиском по форуму:
Iren1
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 91
23.01.2014, 12:19  [ТС]     Определить количество слов, начинаются и заканчиваются одной и той же буквой #20
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Iren1, в свойствах консольного окна поменяйте шрифт на Lucida Console
а это где?)))
Yandex
Объявления
23.01.2014, 12:19     Определить количество слов, начинаются и заканчиваются одной и той же буквой
Ответ Создать тему
Опции темы

Текущее время: 06:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru