0 / 0 / 0
Регистрация: 18.01.2015
Сообщений: 8
1

Реализовать англо-русский словарь

26.02.2015, 20:40. Показов 2572. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Англо-русский словарь построен в виде двоичного дерева. Каждый компонент содержит английское слово, соответствующее ему русское слово и счетчик количества обращений к данному компоненту. Первоначально дерево формируется в порядке английского алфавита. В процессе эксплуатации словаря при каждом обращении к компоненту к счетчику обращений добавляется единица. Написать программу, которая: обеспечивает начальный ввод словаря с конкретными значениями счетчиков  обращений; формирует новое представление словаря в виде двоичного дерева по следующему  алгоритму: производит вывод исходного и нового словарей; обеспечивает диалог с помощью меню и контроль ошибок при вводе
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2015, 20:40
Ответы с готовыми решениями:

Немецко-русский словарь для телефона
Хочу написать простенький словарь для телефона на паскале. Разумеется нужна какая-то база данных,...

Англо-русский словарь
Словарь:заданы два массива строк-массив переводимых слов и соответствующих массив переводов.Ввести...

Англо-русский словарь. Поиск слова в файле
Помогите сделать поиск в файле слова. Например: В файле записано: "Red Красный Grenn Зеленый...

разработка программы "Русско-английский и англо-русский словарь"
разработка программы "Русско-английский и англо-русский словарь" Добавлено через 1 минуту...

3
5065 / 2637 / 2348
Регистрация: 10.12.2014
Сообщений: 10,003
27.02.2015, 06:18 2
Задание слишком обширное.
Вряд ли кто-то за просто так ринется выполнять его в полном объёме…
Да ещё и не известен диалект ЯП… А реализация очень сильно зависит от компилятора!
0
Эксперт Pascal/Delphi
6809 / 4566 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
27.02.2015, 10:38 3
Лучший ответ Сообщение было отмечено shifir как решение

Решение

(С) volvo

Pascal
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
program dynamic;
uses crt;
type
  rec = record
    num: word;
    eng: string;
    rus: string;
  end;
  pnode = ^node;
  node = record
    data : rec;
    left : pnode;
    right: pnode;
  end;
 
var
  F, Fresult: text;
 
procedure print_tree(p:pnode);
begin
  if p = nil then exit;
  with p^ do begin
    print_tree(right);
 
    write(data.eng,'    ', data.rus,'    ', data.num);
    writeln;
    write(Fresult, data.eng,'    ', data.rus,'    ', data.num);
    writeln(Fresult);
 
    print_tree(left);
  end
end;
 
procedure insert(var root: pnode; R: rec);
 
  procedure create_node(var p: pnode);
  begin
    New(p);
    p^.data := R;
    p^.Left := nil;
    p^.Right := nil
  end;
 
begin
  if root = nil then create_node(root)
  else
    with root^ do begin
      if data.eng < R.eng then insert(right, R)
      else
        if data.eng > R.eng then insert(left, R)
        else writeln('takoi element uzhe est"');
    end;
end;
 
procedure remove(var root: pnode; value: integer);
 
  procedure DeleteMin(var Root: pnode; var T: rec);
  var WasRoot: pnode;
  begin
    if Root^.Left = nil then begin
      T := Root^.data;
      WasRoot := Root;
      Root := Root^.Right;
      Dispose(WasRoot);
    end
    else DeleteMin(Root^.Left, T);
  end;
 
var
  WasNext: pnode;
  R: rec;
 
begin
  if Root <> nil then
    if Root^.data.num <> value then begin
      Remove(Root^.Left, value); Remove(Root^.right, value);
    end
    else
      if (Root^.Left = nil) and (Root^.Right = nil) then begin
        Dispose(Root); Root := nil
      end
      else
        if Root^.Left = nil then begin
          WasNext := Root^.Right;
          Dispose(Root);
          Root := WasNext;
        end
        else
          if Root^.Right = nil then begin
            WasNext := Root^.Left;
            Dispose(Root);
            Root := WasNext;
          end
          else begin
            DeleteMin(Root^.Right, R);
            Root^.data := R
          end;
end;
 
 
function max_value(r: pnode): pnode;
var
  found: pnode;
 
  procedure find_max(r: pnode);
  begin
    if r = nil then exit
    else begin
      if found^.data.num < r^.data.num then found := r;
      find_max(r^.left); find_max(r^.right);
    end;
  end;
 
begin
  if r = nil then max_value := nil
  else begin
    found := r;
    find_max(r);
    max_value := found;
  end;
end;
 
 
procedure move(p,pnew:pnode);
var p_max: pnode;
begin
  repeat
    p_max := max_value(p);
    if p_max <> nil then begin
      writeln(p_max^.data.eng);
      insert(pnew, p_max^.data);
      remove(p, p_max^.data.num);
    end;
  until p = nil;
end;
 
var
  root, rootnew: pnode;
  rec1: rec;
 
begin
  root:=nil; rootnew:=nil;
 
  Assign(F, '15_10_in.txt');
  reset(F);
  while not eof(F) do begin
    with rec1 do begin
      readln(F, num);
      readln(F, eng);
      readln(F, rus);
    end;
    insert(root, rec1);
  end;
  close(F);
 
  assign(Fresult, '15_10_out.txt');
  rewrite(Fresult);
  print_tree(root);
  move(root,rootnew);
  close(Fresult)
end.
0
Cyborg Drone
28.03.2015, 13:46     Реализовать англо-русский словарь
  #4

Не по теме:

shifir, рекомендую Вам ознакомиться с правилами форума. Дублирование и кросспостинг тем запрещены. Дубль этой темы удалён. Для того, чтобы поднять актуальность темы, нужно просто написать в тему новое сообщение, например, одно слово "Актуально", и тема тут же оказывается "наверху". Создавать новую тему для поднятия актуальности старой темы бессмысленно и, повторюсь, запрещено. К тому же, при создании дубля темы Вы теряете контекст обсуждения.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2015, 13:46

Русско-английский и англо-русский словарь, который обеспечивает перевод слов, хранящихся в файле данных
Помогите пожалуйста(((крик отчаяния &quot;Русско-английский и англо-русский словарь, который...

Книга на PascalABC или англо - русский переводчик
Привет всем господа программисты мне необходима помощь в написании одной из этих программ (Книга...

Англо-русский программа-переводчик
есть текстовый файл в нем записаны английские слова в одной строке одно слово и далее в этой же...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru