Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337

Ошибка при выводе

16.09.2016, 14:57. Показов 1626. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, написал вот такую програмку по нахождению позиции числа n в последовательности Фибоначчи. На вход подается сумма четных чисел, на выходите необходимо получить позицию, но есть где-то ошибка не могу понять, как исправить.
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
fib(N,F):-fib(N,1,0,F).
fib(N,Fib1,Fib2,F):-
    N>1,
    N1 is N-1,
    NewF is Fib1+Fib2,
    fib(N1,NewF,Fib1,F).
fib(1,F,_,F).
chet(X):-P is X mod 2,P ==0.
sumchet(N,X):-sumchet(N,0,X).
sumchet(N,Sum,X):-
    N>0,
    N1 is N-1,
    fib(N,F),
    (chet(F) -> Sum1 is Sum+F; Sum1 is Sum),
    sumchet(N1,Sum1,X).
sumchet(0,Sum1,Sum1).
check(Numb,N):-check(Numb,0,0,N).
check(Numb,Numb_ans,Pos,N):-
    Numb>=Numb_ans,
    Pos1 is  Pos+1,
    sumchet(Pos1,Numb_ans1),
    (Numb_ans1 == Numb -> write('Yes'); Num_ans2 is Numb_ans1),
    check(Numb,Num_ans2,Pos1,N).
check(_,_,Pos1,Pos1).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2016, 14:57
Ответы с готовыми решениями:

Ошибка при выводе
Написал программу, правда не до конца, но уже столкнулся с ошибкой, при всех условиях, что были поставлены все действия выполняются...

Ошибка при выводе из бд
Здравствуйте, уже второй раз пишу, в прошлый раз кинули ссылки на другие статьи, якобы там ответы, но ответа так и не нашел, пишу...

Ошибка при выводе
Не могу найти ошибку в цикле. Суть такая: "вывести на дисплей фамилии и номера групп для всех студентов, включенных в массив, имеющих хотя...

5
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
16.09.2016, 22:44
Формулировку задачи не понял.
Предикаты fib, chet, sumchet - понятны, разумно сделаны и работают как надо.
Последний предикат не могу без пояснений ни понять, ни связать с заданием.

Не по теме:

Несмотря на развитые телепатические способности.
Буду дальше работать над собой.
Пошёл медитировать

0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
17.09.2016, 14:20  [ТС]
Black Fregat, смысл задачи такой, у нас есть число-это число является суммой четных чисел фибоначи например это 2,10,44 и так далее, на выходе с помощью функции check, необходимо получить ответ на вопрос, является ли это число суммой четных чисел фибоначи и найти позиции, на которых выдается это сумма, то есть для 2 - это позиция 3,4,5, для 10- это 6,7,8.

Добавлено через 7 часов 23 минуты
Black Fregat, Может быть есть идея, как исправить
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
17.09.2016, 21:54
Мне кажется, что центральная проблема - это решение задачи о представлении числа в виде произвольной суммы чисел из заданной совокупности. Проблема эта непроста...
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
18.09.2016, 04:01
Лучший ответ Сообщение было отмечено ilya0610 как решение

Решение

Catstail, судя по тому, что ТС делает, произвольные суммы ему не нужны. Только последовательно от начала и до некоторого индекса.

Цитата Сообщение от ilya0610 Посмотреть сообщение
идея, как исправить
Да проще заново переписать, намудрили Вы..
Prolog
1
2
3
4
5
6
7
check(Numb,N):-check(Numb,0,0,N).
check(Numb,Numb,Pos,Pos).
check(Numb,NumbPos,Pos,N):-
    Numb>=NumbPos,
    Pos1 is  Pos+1,
    sumchet(Pos1,NumbPos1),
    check(Numb,NumbPos1,Pos1,N).
Добавлено через 2 минуты
Prolog
1
2
3
4
5
6
7
8
9
10
11
8 ?- check(100, X).
false.
 
9 ?- check(144, X).
false.
 
10 ?- check(188, X).
X = 12 ;
X = 13 ;
X = 14 ;
false.
Добавлено через 4 минуты
В любом случае это не самое быстрое решение, так как много избыточных вычислений: и fib, и sumchet при каждом вызове заново ползут от начала последовательности
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
18.09.2016, 20:01  [ТС]
Black Fregat, Да понимаю,что не самое быстрое, но в данном случае дело даже не в оптимизации, а в сути, как это реализовать

Добавлено через 17 минут
Black Fregat, Я еще такой простой вопрос, как получить ответ ДА, когда например происходит проверка заданного вначале числа на то, что оно принадлежит сумме четных чисел?Я поэтому и писал, так криво, чтобы ответ выдавать на этот вопрос

Добавлено через 4 минуты
Black Fregat, Спасибо за ответ, я все доделал сам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.09.2016, 20:01
Помогаю со студенческими работами здесь

Ошибка при выводе из бд
Здравствуйте, есть сайт, нужно вывести меню сайта из базы данных, вот код <?php $categories = mysql_query($connection, "SELECT...

Ошибка при выводе из БД
Добрый вечер. Помогите кто чем может, 5-й час бьюсь не могу разобраться, пытаюсь написать что то типо админки. выдает две ошибки: ...

Ошибка при выводе ТЗ
Просматриваю построчно документ (реестр) с записями, в случае отсутствия пациента в базе - заношу его в ТЗ. Сама ТЗ состоит из трех колонок...

Ошибка при выводе IP
С виду самая примитивная программка при нажатии на кнопку выводит IP адрес сетевой карты в Edit, но выдает ошибку при компилировании. На...

Ошибка при выводе <<<
Добрый день! На второй строке выбивает мне ошибку. Почему? print &lt;&lt;&lt;_FORM_ &lt;form method=&quot;POST&quot;...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru