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

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

11.05.2017, 16:30. Показов 2204. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2017, 16:30
Ответы с готовыми решениями:

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

Дана последовательность слов. Напечатать новый текст, удалив из каждого слова все предыдущие вхождения последней букв
Дана последовательность слов. Напечатать новый текст, удалив из каждого слова все предыдущие...

Задана последовательность слов, напечатать эти слова по алфавиту
Дана последовательность, содержащая от 1 до 90 слов, в каждом из которых от 1 до 10 строчных...

Дана последовательность,содержащая от 1 до 30 слов. Вывести эту же последовательность, удалив из нее повторные вхождения
Дана последовательность,содержащая от 1 до 30 слов,в каждом из которых от 1 до 5 строчных латинских...

6
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
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
0 / 0 / 1
Регистрация: 23.11.2016
Сообщений: 51
11.05.2017, 17:30  [ТС] 3
А это как? К концу дня голова уже не работает, сорри
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
11.05.2017, 17:35 4
В строках 25-27 ты же инициализируешь все поля, кроме k.
0
0 / 0 / 1
Регистрация: 23.11.2016
Сообщений: 51
11.05.2017, 17:41  [ТС] 5
т.е. надо написать ?
C++
1
28   (*head)->k=1;
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
11.05.2017, 17:47 6
BananaHack, ну разумеется. Даже в задании сказано.
0
0 / 0 / 0
Регистрация: 08.05.2018
Сообщений: 3
08.05.2018, 20:47 7
BananaHack, Не могли бы вы скинуть что получилось в итоге, а то сижу мучаюсь и не получается
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2018, 20:47

2. Дана целочисленная последовательность. Определить количество вхождений каждого числа в последовательность
Написал программу var a,c:array of integer; count,i,p,u: integer; begin for i:=1 to 10 do...

Алгоритмическая задача. Считать текст из файла и подсчитать частоту вхождения каждого слова
Братство,всем здравия!Я новичок и здесь, и в теме программинга, и в теме C#.Но очень хочу осилить...

Вывести заданную последовательность слов, но удалив из неё повторные вхождения слов
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных...

Распечатать эту же последовательность слов, удалив из нее повторные вхождения слов
Проверка кода. Распечатать эту же последовательность слов, но удалив из нее повторные вхождения...


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

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

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