Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 24

Деревья (найти ошибку в коде)

26.04.2014, 19:42. Показов 1995. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Лексические деревья (trie-деревья) используются для представления словарей. Каждый узел дерева содержит следующую информацию: символ, булевское значение и список поддеревьев (у каждого узла может быть произвольное количество дочерних деревьев).
Пример trie-дерева
Булевское значение, равное True отмечает конец слова, читаемого, начиная с корня дерева. На рисунке узлы с такими значениями помечены символом *. Таким образом, в дереве представлены слова fa, false, far, fare, fact, fried, frieze. Определите следующие функции:
1) exists, которая проверяет, что заданное слово содержится в trie-дереве.
2) completions, которая по заданной строке возвращает список всех слов из дерева, началом которых служит указанная строка (например, для приведенного на рис. 1 дерева по строке "fri" должен возвращаться список ["fried","frieze"].)

Добавлено через 1 минуту

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import Data.List
data LTree = Unit| 
              Char | 
              Bool ([LTree]) deriving Show
exist :: LTree -> String -> Bool
exist  str =[] = False
                (x:xs) | x == str  = True
                          | otherwise = xs
             
 
insert :: LTree -> String -> LTree
insert  [] = []
insert (Unit char) str (s:st) 
            | exist  str = 
            | otherwise = update dstr
 
completions :: LTree -> String -> [String]
completions  str =  [] = []
                         (x:xs) | x = x : xs
                                    | otherwise =  xs
     
 
ltree = build ["fa", "false", "far", "fare", "fact", "friend", "frize"]
ошибка на строчку(((((
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2014, 19:42
Ответы с готовыми решениями:

Двумерный массив. Поиск нулей.Не могу найти ошибку ошибку в коде
Вот,например массив 5 5 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 считываются два числа m и n и далее в выходной...

Найти сумму целых отрицательных чисел удовлетворяющих условию (найти и исправить ошибку в коде)
#include<iostream> #include<math.h> using namespace std; int main() { int y = 0; for(int i = -21; i < -99; i+=3) ...

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

4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
27.04.2014, 09:37
Лучший ответ Сообщение было отмечено ander11193 как решение

Решение

Мне кажется, в определении типа LTree все "палки" лишние...

"ошибка на строчку(((((" и неудивительно... Где определение функции build?

Да у тебя в коде вообще "пурга"! Что это

Haskell
1
exist  str =[] = False
???

Добавлено через 39 минут
Вот начало (может, не слишком рациональное):

Haskell
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
data LTree = Unit Char Bool [LTree] deriving (Eq,Show)
 
-- Извлечь из узла букву
 
getC :: LTree -> Char
getC (Unit c _ _) = c
 
-- найти букву в списке узлов
 
search :: Char -> [LTree] -> [LTree]
search c [] = []
search c (lt:lts) | ((getC lt) == c) = [lt]
                  | otherwise = search c lts
 
-- проверить существование слова
 
exist :: LTree -> String -> Bool
exist (Unit c f more) []     = False  -- строка кончилась, но без индикатора конца
exist (Unit c f _) [w]    = (c == w) && f  -- найден последний символ 
exist (Unit c f more) (w1:ws) | (w1 /= c)  = False -- очередной символ не совпадает
                              | (lm == []) = False  -- очередной символ не найден в продолжении
                              | otherwise  = exist (head lm) ws --  очередной символ найден в продолжении
                                where lm = search (head ws) more
 
-- Проверка (в дереве слова "bux" и "bum"):
 
Main> exist (Unit 'b' False [(Unit 'u' False [(Unit 'm' True []),(Unit 'x' True [])])]) "bum"
True
Main> exist (Unit 'b' False [(Unit 'u' False [(Unit 'm' True []),(Unit 'x' True [])])]) "bux"
True
Main> exist (Unit 'b' False [(Unit 'u' False [(Unit 'm' True []),(Unit 'x' True [])])]) "bax"
False
0
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 24
27.04.2014, 10:02  [ТС]
Спасибо огромное
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
27.04.2014, 11:37
Так это не все...
0
2 / 2 / 0
Регистрация: 22.01.2013
Сообщений: 24
27.04.2014, 21:52  [ТС]
Да я понял я тут пытаюсь 2ую часть сделать но не получается что-то
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2014, 21:52
Помогаю со студенческими работами здесь

Найти ошибку в коде
begin for j:=1 to msize do begin kol:=0; sum:=0; for i:=1 to nsize do if x mod 2=0 then begin inc(sum,x); inc(kol);

найти ошибку в коде
Ошибка в 13 строке invalid conversion from 'int' to 'char*' #include <iostream> #include <stdio.h> using namespace std; char **s =...

Найти ошибку в коде
Код крашится, кто знает в чем дело? Может протестировать чем - то?

Найти ошибку в коде
Ошибка: Compilation failed; see the compiler error output for details. Ошибка в фигурных скобках, я так понял, но где именно надо...

Найти ошибку в коде
type zap=record fio: string; b1: integer; b2:integer; end; var a:array of zap; f1,f2:text; buf:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru