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

Задана последовательность слов. Определить частоту вхождения каждого слова в последовательность.

11.05.2017, 16:30. Просмотров 627. Ответов 6
Метки нет (Все метки)

Доделать программу, чтобы работала как надо

Задана последовательность слов. Определить частоту вхождения каждого слова в последовательность.
Указание. Для решения задачи любое слово ищется в дереве, которое на начальном этапе пусто. Если слово
найдено, то счётчик его вхождений увеличивается на единицу, если нет, то слово включается в дерево с единичным
значением счётчика
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
struct Node
{
    string element;
    int k; // счетчик того, сколько раз слово встретилось в последовательности
    Node *left;
    Node *right;
};
 
Node* Insert(string x, Node** head)
{
 
    if (*head == NULL)
    {
        *head = new Node();
        if ((*head) == NULL)
        {
            cout << "Память заполнена!" << endl;
        }
        else
        {
            (*head)->element = x;
            (*head)->left = NULL;
            (*head)->right = NULL;
        }
    }
    else
    {
 
        if ((*head)->element > x)
        {
            Insert(x, &(*head)->right);
        }
        else
        {
            if ((*head)->element < x)
            {
                Insert(x, &(*head)->left);
            }
            else
                (*head)->k++;       
        }
    }
    return (*head);
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    Node *head = NULL;
    char x[256]; // последовательность слов
    string element;
    int k; // счётчик того, сколько раз слово встретилось в последовательности
    k = 0;
    cout << "Введите последовательность слов: ";
    cin.getline(x, 256); // ввод слов в последовательность
    int n;
    n=strlen(x);
    for(int i=0; i<n;i++)
    {
        if ((x[i]!=' ')&(x[i]!=NULL))
        {
            Insert(element, &head);
            /*element=element+x[i];
            cout<<element;
            i++;*/
        }
        element="";
    }
    
    //Node *head = NULL;
    //Insert(x, &head);
    cout << "\nСлово " << x << " встречается " << k << " раз" << endl;
    getchar();
    return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2017, 16:30
Ответы с готовыми решениями:

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

Получить последовательность символов, содержащую только последние вхождения каждого символа
Даны натуральное число n, символы s1, ... , sn. Получить последовательность символов, содержащую...

Вывести для каждого из символов позицию его последнего вхождения в заданную последовательность
Есть такое задание.Дана последовательность символов С. Выделить в ней все имеющиеся символы и...

Определить частоту появления в тексте каждого слова
#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;ctype.h&gt; #include &lt;string.h&gt; main() { ...

Даны натуральное число n, символы s1,.,sn. Получить последовательность символов, содержащую только последние вхождения каждого символа
Даны натуральное число n, символы s1,...,sn. Получить последовательность символов, содержащую...

6
nmcf
6538 / 5761 / 2623
Регистрация: 14.04.2014
Сообщений: 24,498
11.05.2017, 16:48 2
C++
1
2
3
4
5
6
7
8
9
10
11
    string element, x;
    cout << "Введите последовательность слов: ";
    getline(cin, x); // ввод слов в последовательность
 
    istringstream iss(x);
 
    for(; iss >> element;)
    {
        Insert(element, &head);
        cout<<element << endl;
    }
И присваивать единицу k при добавлении узла.
1
BananaHack
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 40
11.05.2017, 17:30  [ТС] 3
А это как? К концу дня голова уже не работает, сорри
0
nmcf
6538 / 5761 / 2623
Регистрация: 14.04.2014
Сообщений: 24,498
11.05.2017, 17:35 4
В строках 25-27 ты же инициализируешь все поля, кроме k.
0
BananaHack
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 40
11.05.2017, 17:41  [ТС] 5
т.е. надо написать ?
C++
1
28   (*head)->k=1;
0
nmcf
6538 / 5761 / 2623
Регистрация: 14.04.2014
Сообщений: 24,498
11.05.2017, 17:47 6
BananaHack, ну разумеется. Даже в задании сказано.
0
youpain
0 / 0 / 0
Регистрация: 08.05.2018
Сообщений: 3
08.05.2018, 20:47 7
BananaHack, Не могли бы вы скинуть что получилось в итоге, а то сижу мучаюсь и не получается
0
08.05.2018, 20:47
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2018, 20:47

Дана последовательность слов.Напечатать все слова, отличные от слова «по»
задание со строками: Дана последовательность слов.Напечатать все слова, отличные от слова «по». ...

Задана последовательность чисел длиной n. Определить минимальное и максимальное значение этой последовательности ...
Задана последовательность чисел длиной n. Определить минимальное и максимальное значение этой...

После 1-го символа каждого слова вставить последовательность символов
Раздвинуть заданный текст, вставив введенную с клавиатуры последовательность символов после 1-го...


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

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

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