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

Англо-русский словарь построен как дерево - C++

Восстановить пароль Регистрация
 
azatshi
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 3
28.04.2013, 14:33     Англо-русский словарь построен как дерево #1
Англо-русский словарь построен как дерево. Каждая компонента содержит английское слово, соответствующее ему русское слово и счетчик количества обращений к данной компоненте. Первоначально дерево формируется согласно английскому алфавиту. В процессе эксплуатации словаря при каждом обращении к компоненте в счетчик обраще¬ний добавляется единица.
Составить программу, которая:
• обеспечивает начальный ввод словаря с конкретными значениями счетчиков обращений;
• формирует новое представление словаря в виде дерева по следую¬щему алгоритму: а) в старом словаре ищется компонента с наибольшим зна¬чением счетчика обращений; б) найденная компонента заносится в новый словарь и удаляется из старого; в) переход к п. а) до исчерпания исходного словаря;
• производит вывод исходного и нового словарей.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе. Исходные данные могут вводиться как из файла, так из диалога

Не могу записать слова в дерево. Для одного символа работает. Помогите исправить для слов.

C++ (Qt)
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.h>
#include <string.h>
struct tree {
  
  char eng;
  char rus;
  int n;
  struct tree *left;
  struct tree *right;
};
 
struct tree *stree(struct tree *root,struct tree *r,char eng, char rus)
{
  if(!r) {
    r = (struct tree *) malloc(sizeof(struct tree));
    if(!r) {
      printf("Не хватает памяти\n");
      exit(0);
    }
    r->left = NULL;
    r->right = NULL;
    r->eng = eng;
    r->rus = rus;
    r->n = 0;
    if(!root) return r; 
    if(eng < root->eng) root->left = r;
    else root->right = r;
    return r;
  }
  if(eng < r->eng)
    stree(r,r->left,eng,rus);
  else
    stree(r,r->right,eng,rus);
 
  return root; 
}
 
void inorder(struct tree *root)
{
  if(!root) return;
 
  inorder(root->left);
  if(root->eng) printf("%c ", root->eng);cout<<" - ";  printf ("%c ", root->rus);cout<<" ["; cout<<root->n; cout<<"] ";cout<<endl;
  inorder(root->right);
}
 
int main()
{tree *root=NULL;
int n,k; char a,b;
cout<<"vvedite col el= ";
cin>>n;
 
for (int i=0; i<n; i++)
{cout<<"vvedite = "; cin>>a; cout<<"vvedite rus = "; cin>>b; root=stree(root,root,a,b); }
cout<<endl<<"derevo: "<<endl;
 inorder(root);
cin>>n;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 14:33     Англо-русский словарь построен как дерево
Посмотрите здесь:

Англо-русский словарь на С++ C++
C++ Русско-английский и англо-русский словарь
C++ Англо-русский словарь
C++ Англо-русский словарь построен как двоичное дерево.
C++ [C++] Англо-русский словарь
Курсовая работа на тему англо-русский словарь C++
C++ Англо-русский словарь построен в виде двоичного дерева в программе с++
Реализовать русско-английский и англо-русский словарь C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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