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

В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов - C++

Восстановить пароль Регистрация
 
911cat
 Аватар для 911cat
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 6
06.11.2012, 21:44     В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов #1
Так получилось, что тема массивов в этом году была урезана, и поэтому я еле-еле нацарапываю код для циферных массивов. Помогите с задачей, пожалуйста.

Задача: В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов.

Я смог только начать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
#include <locale>
 
void main()
{
setlocale(LC_ALL, "Russian");
char text[1000], p;
int r=5, i;
 
i=0;
printf("Введите произвольный текст: ");
scanf("%с", &text);
 
while(text[i] != " ");
{
тело основного действия
}
 
printf("Количество слов из 5 букв:", p); //Вывод результатта
getch();
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2012, 21:44     В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов
Посмотрите здесь:

C++ Для заданного достаточно длинного слова найти в имеющемся тексте все слова, в которых использованы только буквы, имеющиеся в заданном слове
В произвольном тексте выделить и отпечатать слова, начинающиеся с буквы А. C++
C++ Строки (В произвольном тексте выделить и отпечатать слова, начинающиеся с буквы А)
C++ Найти в тексте и посчитать все слова с двойными согласными
C++ В произвольном тексте найти и отпечатать все слова длиной 5 символов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
06.11.2012, 22:35     В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов #2
Необходимо протестировать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
int main(void)
{
 char* s = new char [1000];
 std::cin.getline(s,1000,'!'); // вводим пока не встретится знак "!", либо пока не введем 1000 символов
 char* t=strtok(s," ,.:;!?"); 
 do
 {
  if ((strlen(t)==6 && strstr(t,"\n"))||(strlen(t)==5 && !strstr(t,"\n")))
   std::cout<<t<<std::endl;
 }
 while (t=strtok(NULL," ,.:;!?"));  
 system("PAUSE");
 return 0;
}
Вводить можно все, что угодно (enter в том числе), пока не введем !, этот знак не учитывается при поиске.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
06.11.2012, 23:04     В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов #3
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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void split(vector<string>& dest, const string& str, const char* delim)
{
    char* pTempStr = strdup( str.c_str() );      
    char* pWord = strtok(pTempStr, delim);       
    while(pWord != NULL)
    {
        dest.push_back(pWord);
        pWord = strtok(NULL, delim);        
    }
    
    free(pTempStr); 
}
int main()
{
    string str="privet kak tvoie dela qwert? slonik poplp ololo";
    char* delim=" ";
    vector<string> v;
    split(v,str,delim);
    for(int i=0;i<v.size();i++)
    {
        if(v[i].size()==5) cout<<v[i]<<endl;
    }
    system("pause");
    return 0;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.11.2012, 05:39     В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов #4
Цитата Сообщение от BumerangSP Посмотреть сообщение
t=strtok(s," ,.:;!?");
*do
*{
* if ((strlen(t)==6
не сработает. t всё равно указывает на место в большой строке s и вызов strlen выдаст не длину слова, а длину всей строки s, начиная с этого места.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
07.11.2012, 07:19     В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов #5
BumerangSP, память освобождать Пушкин будет?

Добавлено через 9 минут
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>
#include <algorithm>
#include <iterator>
#include <functional>
#include <sstream>
#include <cctype>
 
class word_length : public std::unary_function<std::string, bool>
{
    std::string::size_type len;
public:
    word_length(std::string::size_type length):
      len(length)
    {
    }
    bool operator () (const std::string& str)
    {
        return str.size() == len;
    }
};
 
class is_word_delimiter : public std::unary_function<char, bool>
{
public:
    bool operator () (char ch)
    {
        return isspace(ch) || ispunct(ch);
    }
};
 
int main()
{
    std::string str;
    std::cout << ">>>";
    std::getline(std::cin, str, '\n');
    std::replace_if(str.begin(), str.end(), is_word_delimiter(), ' ');
    std::istringstream stream(str);
    std::copy_if(
        std::istream_iterator<std::string>(stream),
        std::istream_iterator<std::string>(),
        std::ostream_iterator<std::string>(std::cout, " "),
        word_length(5));
    std::cout << std::endl;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
07.11.2012, 16:21     В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов #6
Kuzia domovenok, в смысле, вообще не сработает? Или пример какой конкретный есть?
Пaтрик, придется, ибо память у меня (моя) не предусматривает
Yandex
Объявления
07.11.2012, 16:21     В пpоизвольном тексте найти и отпечатать все слова длиной 5 символов
Ответ Создать тему
Опции темы

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