Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Anna1997
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 2
#1

Выяснить, есть ли в заданной строке слова, которые содержат все буквы слова "read" - C++

21.03.2015, 15:49. Просмотров 395. Ответов 2
Метки нет (Все метки)

Помогите, пожалуйста, с кодом на с++.
Задание было такое: Дано строку символов. Выяснить, есть ли в ней слова, которые содержат все буквы слова "read". Если нет, то вывести на печать буквы, которых не хватает.

Как можно переделать мой код, что бы не использовались стандартные функции обработки строк?
И вот мой код:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <cstdlib>
#include <iostream>
#include <string.h>
 
using namespace std;
 
int main()
{
    char *ptr, str[80], *W[20];
    int j, q, i;
    cout<<"\nInput the row: ";
    gets(str);
    cout<<"\nRow of symbols: ";
    puts(str);
 
    j=-1;
    ptr=strtok(str, " ");
    while (ptr!=NULL)
    {
        j++;
        W[j]=ptr;
        ptr=strtok( NULL, " ");
    }
    q=j;
    cout<<"\nWords of the row: \n";
    for (j=0; j<=q; j++)
    {
        cout<<" W["<<j<<"]=";
        puts(W[j]);
    }
    
    for(j=0; j<=q; j++)
    {
         cout << "\nSearch of symbols 'read' at the word '" << W[j] << "'.\t";
         char word[5];
         strcpy(word,"read");
         int counter=0;
         for(unsigned k = 0; k < strlen(W[j]); k++) 
         for(int i = 0; i < 4; i++) 
         {
            if (word[i] == W[j][k]) 
            {
                    word[i] = ' ';
                    counter++;
                    break;
            }
         }
         if (counter == 4)
            cout<<"\nAll characters of \"read\" exist in: '"<<W[j]<<"'";
         else 
         {
            cout<<"Not enough: ";
            for(int i = 0; i < 4; i++)
                if (word[i] != ' ') cout<<word[i];
        }
        cout<<"\n";
    }
    cout << "\n";
 
    system("pause");
    return 0;
}
Зарание спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2015, 15:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выяснить, есть ли в заданной строке слова, которые содержат все буквы слова "read" (C++):

Есть ли в строке слова, которые содержат все буквы слова "read" - C++
Помогите пожалуйста с заданием на си. Дано строку символов. Выяснить, есть ли в ней слова, которые содержат все буквы слова &quot;read&quot;. Если...

Вывести все слова из S, которые начинаются с буквы "С" - C++
Дана строка S, состоящая из слов, разделённых пробелами, и буква c. Выведите все слова из S, которые начинаются с буквы c. Формат...

Нужно найти слова которые встречаются в буквы "a" "z" - C++
Даны две буквы &quot;a&quot; &quot;z&quot; и текст, нужно найти и вывести те слова в которых встречаются две эти буквы вот мой вариант но он не работает ...

Дана строка. Указать те слова, которые содержат хотя бы одну букву "k" - C++
C++: дана строка. указать те слова которые содержат хотя бы одну букву k, помогите пожалуйсто решить

Найти в файле все слова которые содержат двойные буквы - C++
Найти в файле f все слова которые содержат двойные буквы и сложить с них новый файл q.

Определить длину каждого слова. Удалить все буквы "а" и "о" с фамилии - C++
3.Написать программу, вводите фамилию, имя и отчество одной строкой. Определить длину каждого слова. Удалить все буквы &quot;а&quot; и &quot;о&quot; с фамилии....

2
rao
853 / 406 / 119
Регистрация: 02.04.2014
Сообщений: 1,171
21.03.2015, 17:44 #2
У тебя функций то там две всего: strtok и strcpy. Перепиши их вручную и тогда в коде ничего менять не придется.
Вот, я тебе одну написал:

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
char * myStrtok(char *strToken, const char *strDelimit)
{
    static char *pString;
    if (strToken != NULL) pString = strToken;
    if (pString == NULL || *pString == 0) return NULL;
 
    char *pReturnStr = NULL;
    char *pCurrentPos = pString;
    const char *pDelimiter = NULL;
    while (*pCurrentPos != 0)
    {
        pDelimiter = strDelimit;
        while ( *pDelimiter != 0)
        {
            if ( *pCurrentPos == *pDelimiter ) 
            {
                *pCurrentPos = 0;
                pReturnStr = pString;
                pString = pCurrentPos+1;
                return pReturnStr;
            }
            pDelimiter++;
        }
        pCurrentPos++;
    }
    pReturnStr = pString;
    pString = pCurrentPos;
    return pReturnStr;
};
Вторая попроще, наверное справишься.
0
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
21.03.2015, 18:25 #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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <string>
#include <cctype>
#include <map>
#include <iomanip>
using namespace std;
 
int main()
{
    string str;
    getline (cin, str);
    int i = 0;
    bool flag = false;
    map<string, string> obj;
    int max_length_word = -1;
    while (i < str.size())
    {
        if (isalpha (str[i]))
        {
            int j = i;
            string word = "read";
            while (i < str.size() && isalpha(str[i]))
            {
                int find = word.find(str[i]);
                if (find!=-1)
                    word.erase(find, 1);
                ++i;
            }
            if (word.empty())
            {
                flag = true;
                break;
            }
            else
            {
                string substr = str.substr(j, i - j);
                obj[substr] = word;
                int k = substr.size();
                if (k > max_length_word)
                    max_length_word = k;
            }
        }
        else
            ++i;
    }
    if (flag)
    {
        cout <<"Yes\n";
    }
    else
    {
        cout.setf (ios::left);
        cout <<endl <<setw (max_length_word + 10) <<"Word" <<"Nedd letters\n";
        for (map<string, string>::iterator i = obj.begin(); i!=obj.end(); i++)
        {
            cout <<setw (max_length_word + 10) <<i->first <<i->second <<endl;
        }
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2015, 18:25
Привет! Вот еще темы с ответами:

Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например, "АННА", "ШАЛАШ" - C++
Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например, &quot;АННА&quot;,...

Введите предложение, в данной строке нужно заменить все слова "погрешность" на "ошибка" - C++
Введите предложение, в данной строке нужно заменить все слова &quot;погрешность&quot; на &quot;ошибка&quot;.

Определить количество слов, которые содержат ровно четыре буквы "о", "О" - C++
Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно...

Определить, есть ли в тексте слова, начинающиеся и заканчивающиеся с буквы "А" - C++
Дан текст, состоящий не менее чем из пяти слов. Определить, есть ли в нем слова, начинающиеся и заканчивающиеся с буквы &quot;А&quot;, а также...


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

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

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