Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8

Вычислить "семиэтажную" дробь

15.09.2016, 14:47. Показов 1072. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано выражение, которое надо вычислить

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{\sin1}{\frac{\sin2}{\frac{\sin4}{...}+\frac{\sin5}{...}}+\frac{\sin3}{\frac{\sin6}{...}+\frac{\sin7}{...}}}<br />
Это только три "этажа" дроби. А всего 7.
Дробь содержит 127 синусов. От sin1 до sin127 строго по-порядку

подсказка
маленькие дроби имеют вид: https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{sin(n)}{sin(2n)+sin(2n+1)}
где 1 < n < 64

Программа решает эту задачу. Ответ: 2.778758
Автор просит оценить эту задачу по семибальной шкале
(код, нестандартность, сложность)

Вопросы
Решали ли вы что-либо подобное?
Есть ли рекурсивное решение?
Есть ли иное решение?

QBasic/QuickBASIC
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
REM
REM  OTBET: 2.778758
REM
 
CLS
DIM A(1 TO 127)
 
FOR i = 1 TO 127
   A(i) = SIN(i)
NEXT
 
n = 126
 
DO
   IF n >= 64 THEN
      m = n / 2
      A(m) = A(m) / (A(n) + A(n + 1))
      n = n - 2
   ELSEIF n >= 32 THEN
      m = n / 2
      A(m) = A(m) / (A(n) + A(n + 1))
      n = n - 2
   ELSEIF n >= 16 THEN
      m = n / 2
      A(m) = A(m) / (A(n) + A(n + 1))
      n = n - 2
   ELSEIF n >= 8 THEN
      m = n / 2
      A(m) = A(m) / (A(n) + A(n + 1))
      n = n - 2
   ELSEIF n >= 4 THEN
      m = n / 2
      A(m) = A(m) / (A(n) + A(n + 1))
      n = n - 2
   ELSEIF n = 2 THEN
      m = n / 2
      A(m) = A(m) / (A(n) + A(n + 1))
      n = n - 2
   END IF
LOOP UNTIL n = 0
 
PRINT A(1)
END
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2016, 14:47
Ответы с готовыми решениями:

Вычислить цепную дробь по формуле
Здравствуйте, пожалуйста, помогите составить программы, которые считали бы данные выражения. Соответственно, 1ое просто вывод ответа, а...

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

Вычислить дробь
Вычислить дробь (см. рис) REM REM d7 = 77.40463 REM DECLARE FUNCTION D! (a!, b!, c!) CLS d1 = D(3, 4, 5)

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
15.09.2016, 15:10
Лучший ответ Сообщение было отмечено echs как решение

Решение

На Паскале задача решается так:
Pascal
1
2
3
4
5
6
7
8
9
Function f(n: integer) : double;
Begin
  If n>63 then f:= sin(n)
  Else result := sin(n) / (f(2*n)+f(2*n+1))
End;
 
Begin
  Writeln(f(1));
End.
Сам на Бейсик переведешь?
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
15.09.2016, 15:58  [ТС]
volvo,
Я потрясен! Вы гений! Вы за минуту решили то, на что
у меня ушло больше часа. Программу перевел. Работает
как часы! Вот что значит я ходил около рекурсивного
решения, но решили Вы!! Большое спасибо вам за это решение!

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
REM
REM  OTBET: 2.778758
REM
 
DECLARE FUNCTION f! (n!)
CLS
 
PRINT f(1)
END
 
FUNCTION f (n)
   IF n > 63 THEN
      f = SIN(n)
   ELSE
      f = SIN(n) / (f(2 * n) + f(2 * n + 1))
   END IF
END FUNCTION
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
16.09.2016, 04:08
Лучший ответ Сообщение было отмечено echs как решение

Решение

Данную задачу можно решить без рекурсий:
QBasic/QuickBASIC
1
2
3
4
5
DIM i AS LONG, s(1 TO 127) AS DOUBLE
FOR i = 127 TO 1 STEP -1
    IF i > 63 THEN s(i) = SIN(i) ELSE s(i) = SIN(i) / (s(i * 2) + s(i * 2 + 1))
NEXT i
PRINT s(1)
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
16.09.2016, 09:46  [ТС]
m-ch
Спасибо!
Всегда приятно знать, что задача решается несколькими
способами. Пусть каждый, кто зайдет в эту тему, выбирает
то, что ему больше нравится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2016, 09:46
Помогаю со студенческими работами здесь

Вычислить непрерывную дробь
Составить программу для вычисления с точностью eps=10-5:

Вычислить дробь с тангенсами
Помогите пожалуйста сделать простенькую программу которая обчислит ниже уровнение

Вычислить цепную дробь.
Вычислить цепную дробь ...

Нужно вычислить дробь

Вычислить цепную дробь
Вычислить:


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru