Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2011, 12:55   #1
inc
Пользователь
 
Аватар для inc
 
Регистрация: 23.05.2011
Сообщений: 14
По умолчанию Динамические структуры данных.

Англо-русский словарь построен в виде двоичного дерева. Каждая компонента содержит английское слово, соответствующее ему русское слово и счетчик количества обращений к данной компоненте.

Первоначально дерево формируется в порядке английского алфавита. В процессе эксплуатации словаря при каждом обращении к компоненте к счетчику обращений добавляется единица.

Составить программу, которая:

обеспечивает начальный ввод словаря с конкретными значениями счетчиков обращений;

формирует новое представление словаря в виде двоичного дерева по следующему алгоритму: а) в старом словаре ищется компонента с наибольшим значением счетчика обращений; б) найденная компонента заносится в новый словарь и удаляется из старого; в) переход к пункту а) до исчерпания исходного словаря.

производит вывод исходного и нового словарей.

Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

как это можно сделать хотя бы примерно
inc вне форума Ответить с цитированием
Старый 18.06.2011, 15:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Первоначально дерево формируется в порядке английского алфавита.
Это мне понятно - изначально отсортировать (типа построить индекс) массив аглицких слов.
Цитата:
а) в старом словаре ищется компонента с наибольшим значением счетчика обращений; б) найденная компонента заносится в новый словарь и удаляется из старого; в) переход к пункту а) до исчерпания исходного словаря.
А вот это какая-то глупость... Зачем счетчик этот нужен? В чем его смысл? Просто показать какие слова чаще всего использовались?
Тогда тоже стоит завести массив, где будут указатели на слова словаря, и отсортировать его по убыванию счетчиков.

Код:
// sfsdf.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <string>
using namespace std;

// Наша база
struct wrds{
  string s;
  int count;
} dict[4];

// Таблицы индексов
int index_wrds[4],index_count[4];

// Создание индекса по словам
void index_words(){
	for(int i=0;i<4;i++) index_wrds[i]=i;
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++){
			if(dict[index_wrds[i]].s<dict[index_wrds[j]].s){
				int k=index_wrds[i];index_wrds[i]=index_wrds[j]; index_wrds[j]=k;
			}
		}
	}
}

// Создание индекса по использованию слов
void index_counts(){
	for(int i=0;i<4;i++) index_count[i]=i;
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++){
			if(dict[index_count[i]].count>dict[index_count[j]].count){
				int k=index_count[i];index_count[i]=index_count[j]; index_count[j]=k;
			}
		}
	}
}

// Вывод на экран базы по разным индексным планам
void write(){for(int i=0;i<4;i++) printf("%d\t%s\n",dict[index_wrds[i]].count,dict[index_wrds[i]].s.c_str());}
void write2(){for(int i=0;i<4;i++) printf("%d\t%s\n",dict[index_count[i]].count,dict[index_count[i]].s.c_str());}

int _tmain(int argc, _TCHAR* argv[])
{
	dict[0].s="my";			dict[1].count=3;
	dict[1].s="Hello";		dict[0].count=4;
	dict[2].s="yellow";		dict[2].count=10;
	dict[3].s="world";		dict[3].count=2;
	index_words(); write();printf("\n");
	index_counts(); write2();
	getchar();
	return 0;
}
Сойдет такая схема?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.06.2011, 06:22   #3
inc
Пользователь
 
Аватар для inc
 
Регистрация: 23.05.2011
Сообщений: 14
По умолчанию

блин просто самое огромное спасибо спасибо спасибо
inc вне форума Ответить с цитированием
Старый 03.12.2012, 19:39   #4
BustersRN1
Новичок
Джуниор
 
Регистрация: 03.12.2012
Сообщений: 1
Лампочка

Привет! У тебя случаем не осталось кода этой программы? Я вот для себя решил разобраться, да мозг уже закипает, а бросать совесть не позволяет, третий день парюсь, а лампочка не загорается...
BustersRN1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных doter Visual C++ 2 21.02.2011 12:23
Динамические структуры данных на Си STIGGA Общие вопросы C/C++ 1 05.12.2009 00:50
Динамические структуры данных Yashanov Помощь студентам 1 29.04.2009 10:11
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ shvarz Общие вопросы C/C++ 1 10.05.2008 19:48