Форум программистов, компьютерный форум CyberForum.ru

Вычислить 7 ^ 77 - QBasic

Войти
Регистрация
Восстановить пароль
 
echs
715 / 910 / 345
Регистрация: 23.10.2013
Сообщений: 4,149
Записей в блоге: 3
03.01.2017, 11:29     Вычислить 7 ^ 77 #1
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
44
REM
REM      Контрольное вычисление
REM  7 ^ 77 = 1.181 813 865 805 959 D+65
REM
 
DECLARE FUNCTION M! (i!)
DECLARE FUNCTION ST$ (n!)
DECLARE SUB Si7 ()
 
CLS
DIM SHARED S AS STRING
S = "49"
 
FOR i = 1 TO 75
   CALL Si7
NEXT
 
PRINT S
END
 
FUNCTION M (i)
   M = VAL(MID$(S, i, 1))
END FUNCTION
 
SUB Si7
   DIM t AS STRING
  
   FOR i = LEN(S) TO 1 STEP -1
      a = 7 * M(i) + p
      b = a MOD 10
      p = a \ 10
      t = ST(b) + t
   NEXT
 
   IF p THEN
      S = ST(p) + t
   ELSE
      S = t
   END IF
END SUB
 
FUNCTION ST$ (n)
   ST = LTRIM$(STR$(n))
END FUNCTION
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2017, 11:29     Вычислить 7 ^ 77
Посмотрите здесь:

QBasic Вычислить элемент матрицы А и вычислить суммы элементов каждой строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
m-ch
5089 / 668 / 166
Регистрация: 25.02.2011
Сообщений: 919
Записей в блоге: 1
03.01.2017, 14:56     Вычислить 7 ^ 77 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
QBasic не самый лучший язык для работы с длинной арифметикой
При этом реализация вычислений используя строковые переменные - не оптимально по скорости, лучше все вычисления производить в массивах, и только перед выводом - формировать текстовую строку.

вариант вычисления с помощью массива:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DIM i AS LONG, j AS LONG, l AS LONG, a(999) AS LONG, b AS LONG, c AS LONG
a(0) = 1
FOR i = 1 TO 77
    j = -1
    WHILE j < l OR c > 0
        j = j + 1
        b = a(j) * 7 + c
        a(j) = b MOD 10
        c = b \ 10
    WEND
    l = j
NEXT i
FOR i = 0 TO l
    PRINT LTRIM$(STR$(a(l - i)));
NEXT i
PRINT
Добавлено через 9 минут
echs, если будет много времени и желания, то попробуйте вычислить пример из этой темы: Возведение в степень

для быстрых вычислений в Excel можно использовать надстройку от bedvit: http://www.cyberforum.ru/blogs/829006/blog4356.html
echs
715 / 910 / 345
Регистрация: 23.10.2013
Сообщений: 4,149
Записей в блоге: 3
03.01.2017, 15:14  [ТС]     Вычислить 7 ^ 77 #3
m-ch
Спасибо! Я в начале хотел было применить массивы,
но подумал, что число не длинное (результат всего
66 знаков). Ну раз так, то еще раз спасибо за программу
и дополнительную информацию!!

Добавлено через 3 минуты
Классный пример, только у QBasic нет такого
размера массивов, да и строк тоже.
bedvit
145 / 15 / 3
Регистрация: 20.05.2016
Сообщений: 124
Записей в блоге: 1
11.01.2017, 12:53     Вычислить 7 ^ 77 #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Михаил плохого не посоветует! Глубоко уважаю его математический склад ума!
Так же приятно видеть здесь ссылку на результат нашей с Михаилом работы над длинными числами (мою надстройку).
Выложу и пример работы надстройки для Excel (пример полностью работоспособен для любых вычислений, работает на Win+Office x32 и x64).
Вычисление для данных двух примеров (7^7 и 9^999999+9^999999) итог:
Время вычисления (секунд) = 0,078125
Время вывода/заполнения ячеек (секунд) = 6,847656
На средненьком ПК.
Большой размер файла из-за встроенной библиотеки (просто распаковываем их архива, жмем кнопку "вычислить").
Вложения
Тип файла: rar LongNum.rar (1.65 Мб, 0 просмотров)
echs
715 / 910 / 345
Регистрация: 23.10.2013
Сообщений: 4,149
Записей в блоге: 3
11.01.2017, 13:39  [ТС]     Вычислить 7 ^ 77 #5
bedvit
Спасибо за то, что посетили этот форум и мою
тему в частности. Здесь мало бывает народу.
Считается, что QBasic устарел. НО мало кто понимает,
что на QBasic'е можно создавать сложные программы
такие, где не поможет ни один модный язык. Ведь
задачу решает программист, а язык программирования
лишь инструмент.
bedvit
145 / 15 / 3
Регистрация: 20.05.2016
Сообщений: 124
Записей в блоге: 1
11.01.2017, 14:18     Вычислить 7 ^ 77 #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
echs, Не хочу вас расстраивать, но надстройка написана на С#,С, ассемблере. Даже не на первом моем языке и до сих пор любимом - VBA. VBA (Excel) только использует её. Но все начиналось именно с него. И не могу не согласится с вашим рассуждением - здесь главное программист, а инструменты могут быть разные. Думаю и QBasic вполне конкурентоспособен для своего круга задач, особенно если программист с прямыми руками
echs
715 / 910 / 345
Регистрация: 23.10.2013
Сообщений: 4,149
Записей в блоге: 3
11.01.2017, 14:34  [ТС]     Вычислить 7 ^ 77 #7
bedvit
СПАСИБО!! Вы меня ничуть не расстроили.
QBasic никогда не состарится.
Программисты бренны, а программы на QBasic нетленны!!
Yandex
Объявления
11.01.2017, 14:34     Вычислить 7 ^ 77
Ответ Создать тему
Опции темы

Текущее время: 19:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru