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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2018, 14:52   #1
Temka3791
Пользователь
 
Регистрация: 05.03.2018
Сообщений: 17
По умолчанию Паскаль. Вычислить цепную дробь. Не получается закончить программу. Подскажите в чем проблема

2018-03-18.png
Код:
uses crt;
var x,s:real;
    n,i:integer;
begin
clrscr;
repeat
writeln('введите кол-во эл-ов цепной дроби >0 n=');
readln(n);
until n>0;
write('x=');
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 20.03.2018 в 13:49.
Temka3791 вне форума Ответить с цитированием
Старый 18.03.2018, 15:14   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

end.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.03.2018, 15:16   #3
Temka3791
Пользователь
 
Регистрация: 05.03.2018
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
end.
Может что-то не добвил???
Temka3791 вне форума Ответить с цитированием
Старый 18.03.2018, 15:20   #4
Temka3791
Пользователь
 
Регистрация: 05.03.2018
Сообщений: 17
По умолчанию

сама дробь не вычисляется
Temka3791 вне форума Ответить с цитированием
Старый 18.03.2018, 18:07   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Вот ведь мерзавка какая - САМА не вычисляется !
А если сама не вычисляется, придется нам ее попробовать вычислить приблизно так (для простоты чтоб не сбиться распилим ее ее части ):
Код:
  Readln (K) ;
  s := K + 1/(99+1/(101+1/103)) ;
  s := 1/(1+1/(3+1/(5+1/s)))
;

Последний раз редактировалось digitalis; 18.03.2018 в 18:15.
digitalis вне форума Ответить с цитированием
Старый 19.03.2018, 21:03   #6
Temka3791
Пользователь
 
Регистрация: 05.03.2018
Сообщений: 17
По умолчанию Типо так?

function rec(integer k): double
begin
if (k == 103) then
rec:=1/103;
else then
rec:=rec(k+2)
end
Temka3791 вне форума Ответить с цитированием
Старый 20.03.2018, 11:10   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

И что это было?
Я расписал, как вычислить эту смешную цепную дробь без всяких if'ов и не пытаясь отыскать в ней закономерности и рекурентности, которых в ней нет. Надо вычислить дробь - вычислили дробь. Или еще чего ? Если бы не было этих K, 99, 101 - можно было бы попытаться состряпать рекурентную формулу и вычислять в цикле, но чого нэма - того нэма. Задание, видимо, состояло в том, чтобы написать сложное выражение и не запутаться при этом в количестве и месторасположении скобок. Isn't it ?

Последний раз редактировалось digitalis; 20.03.2018 в 11:17.
digitalis вне форума Ответить с цитированием
Старый 20.03.2018, 13:13   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Типо так?
Код:
function rec(k: Integer): double;
begin
  if k=103 then rec:=1/103 else rec:=1/(k+rec(k+2));
end;
....
x:=rec(1);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.03.2018 в 13:17.
Аватар вне форума Ответить с цитированием
Старый 20.03.2018, 14:38   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Все понятно - там перед K + должно стоять многоточие, обозначающее "и так далее в том же духе вплоть до К=103 включительно". Я бы это делал без рекурсии (если это не навязано эаданием), а в цикле.
digitalis вне форума Ответить с цитированием
Старый 20.03.2018, 14:52   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ТС же рекурсию хотел. И согласен - цикл в общем случае лучше рекурсии
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите в чем ошибка? (паскаль) artem55555p Помощь студентам 1 08.12.2015 22:31
рациональную дробь перевести в цепную дробь. на Паскале. (проверьте программку, где то ошибка:( ) masal86 Помощь студентам 1 20.02.2013 12:42
Не получается отсортировать структуру. В чем проблема понять никак не могу AlEnanechker Помощь студентам 1 25.12.2009 17:02
Подскажите в чем проблема...? SkyRider-NG SQL, базы данных 1 02.12.2009 08:31