Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 25
1

Visual Prolog, динамическая база данных с CRUD

05.12.2018, 22:45. Показов 2163. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Построить динамическую базу данных о семье, которая включает структурированную информацию о семье. Структорована информация представляется в форме одного предложения. Схематическое изображение фактов о семье на рис.1.(вложение) Дети представляются списочной структурой произвольной длины (третья ветвь). Распечатки результатов представить в понятной форме на экране или в файле с соответствующими пояснениями.

Выбрать семьи, в которых доход на одного члена семьи менее 500.
Миниатюры
Visual Prolog, динамическая база данных с CRUD  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2018, 22:45
Ответы с готовыми решениями:

Динамическая база данных
"Информационно-справочная библиотечная сисетма". Характеристики книги: ID, автор, название, год...

Динамическая база данных о рейсах
Разработать программу, моделирующую компьютерную версию расписания авиарейсов, содержащего...

Динамическая база данных - нужен любой пример
Дайте, пожалуйста, любую лабу Динамическая база данных (на основе списков) ... очень нужна .....

База данных с вложенной структурой Prolog
Здравствуйте. Имеется задание создать базу данных с вложенной структурой "Структура локальной...

4
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 25
06.12.2018, 00:17  [ТС] 2
Prolog
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
implement mainForm inherits formWindow
    open core, vpiDomains
 
domains
    name = string.
    lastname = string.
    birthday = date(integer, integer, integer).
    salary = integer.
    workName = string.
    work = work(workName, salary).
    memberFamily = memberFamily(name, lastname, birthday, work).
    childrens = memberFamily*.
 
facts - familyDb
    family : (memberFamily, memberFamily, childrens).
 
predicates
    concatStr : (string*) -> string.
    displayAllFamilySalary : ().
 
clauses
    concatStr([]) = Str :-
        Str = "".
    concatStr([StrHead | StrTail]) = Str :-
        Str = string::concat(StrHead, concatStr(StrTail)).
 
    displayAllFamilySalary() :-
        family(memberFamily(FatherName, FatherLastname, _, work(_, FatherSalary)),
            memberFamily(MotherName, MotherLastname, _, work(_, MotherSalary)), []),
        Salary = FatherSalary + MotherSalary,
        edit_ctl:setText(
            concatStr(
                [
                    edit_ctl:getText(),
                    concatStr(
                        [
                            "Чоловік : ",
                            FatherName,
                            " ",
                            FatherLastname,
                            " ",
                            ", Зарплата : ",
                            toString(FatherSalary),
                            "\n",
                            "Жінка : ",
                            MotherName,
                            " ",
                            MotherLastname,
                            " ",
                            ", Зарплата : ",
                            toString(MotherSalary),
                            "\n",
                            "Загальна зарплата : ",
                            toString(Salary),
                            "\n" "\n"
                        ])
                ])),
        fail.
    displayAllFamilySalary().
У меня есть программа которая выводит доход семьи, как мне сделать чтобы выводились семьи у которых доход на одного члена семьи менее 500.
0
Фрилансер
3705 / 2077 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
06.12.2018, 09:15 3
Цитата Сообщение от nothing1 Посмотреть сообщение
как мне сделать чтобы выводились семьи у которых доход на одного члена семьи менее 500
Вот прямо между строчками 30 и 31 вставить нужное условие.

PS. А чем не угодил стандартный string::concatList() ?
0
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 25
06.12.2018, 12:41  [ТС] 4
Цитата Сообщение от Black Fregat Посмотреть сообщение
Вот прямо между строчками 30 и 31 вставить нужное условие.
Не совсем дружу с прологом, а сегодня нужно сдать( Я конечно сейчас попробую сделать, но, если не затруднит, напишите как должно это условие выглядеть в виде кода. Спасибо
0
Фрилансер
3705 / 2077 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
06.12.2018, 13:56 5
Сначала надо посчитать количество членов семьи.
Ваш код на самом деле выбирает семьи, в которых нет детей, это так и должно быть?
Если нет, то нужно менять с самого начала предиката:
Prolog
1
2
3
4
5
6
7
8
9
    displayAllFamilySalary() :-
        family(memberFamily(FatherName, FatherLastname, _, work(_, FatherSalary)),
            memberFamily(MotherName, MotherLastname, _, work(_, MotherSalary)), 
            Children),
        FamilySize = 2 + list::length(Children),
        Salary = FatherSalary + MotherSalary,
        Salary / FamilySize < 500,
        edit_ctl:setText(
        ...
0
06.12.2018, 13:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2018, 13:56
Помогаю со студенческими работами здесь

База данных на Prolog, найти минимальное
Доброго времени суток! Задали сделать любую базу данных с любыми предикатами и правилами. Создала...

База данных, список с двойной связью, динамическая память
Люди добрые, помогите пожалуйста) Задание: разработать информационно-справочную систему учета...

Нахождение самой дорогой игрушки (динамическая база данных)
Нужна помощь в написании 4 пункта: получить названия наиболее дорогих игрушек (цены которых...

SWI Prolog ввод-вывод и база данных
Задание: Первый игрок вводит в базу 5 чисел первого десятка, второй пытаясь угадать, какие числа...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru