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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сцепить имена в строку http://www.cyberforum.ru/cpp-beginners/thread850879.html
Пожалуйста, помогите решить задачу. Дан массив из 8 элементов. Нужно сцепить в одну строку все имена, в которых есть подстрока «qwe” и длина которых меньше 5. Удалить символы с 4 по 6 и вставить перед 2 символом «123”. Заменить название a этой строкой. Вывести поля a.
C++ Определение количества разрядов числа через функцию Вводится последовательность из N целых чисел. Найти количество двух- и количество трех-разрядных чисел в последовательности http://www.cyberforum.ru/cpp-beginners/thread850873.html
C++ Сортировка записей в массиве указателей на структуру
Помогите с ошибкой пожалуйста. В мейне если вызывать сортировку выбором или вставками, всё работает. А вот шелла и быстрая - ошибка. просто вылетает программа. Подскажите пожалуйста, что исправить? #include <iostream.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <string.h>
C++ Глобальные переменные (ошибка)
Разбирался в глобальных переменных, программа выдает ошибку... Что не так? #include <iostream> using namespace std; ////////////////////////////////////////////////// void func1(); void func2(); int count;//Ãëîáàëüíàÿ ïåðåìåííàÿ //////////////////////////////////////////////////
C++ Процедура обхода для дерева http://www.cyberforum.ru/cpp-beginners/thread850856.html
Постройте процедуру обхода для получения следующей информации о деревьях - Определите количество ветвей, имеющих максимальную длину
C++ битовая маска надо разработать функцию проверки правильности битовой маски. 32-х битная “маска” считается действительной, если ее двоичное представление содержит непрерывный ряд “1″ и следующий за ним ряд “0″. Пример правильных битовых масок: 11110000000000000000000000000000 11111000000000000000000000000000 11111111111100000000000000000000 Пример неправильных... подробнее

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

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

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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru