Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Anna1997
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 2
1

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

21.03.2015, 15:49. Просмотров 446. Ответов 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++? Не совсем понимаю принцип.

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

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

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

2
rao
894 / 415 / 158
Регистрация: 02.04.2014
Сообщений: 1,201
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
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 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

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

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

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...


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

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

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