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

QBasic

Войти
Регистрация
Восстановить пароль
 
echs
891 / 1086 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
#1

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

03.01.2017, 11:29. Просмотров 198. Ответов 6
Метки нет (Все метки)

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
Посмотрите здесь:

Задан массив А размером п. Вычислить среднее арифметическое положительных элементом. Вычислить a1 • a2 + a2 • a3 + + an -1 • an - Turbo Pascal
помогите решить, пожалуйста! Задан массив А размером n. Вычислить среднее арифметическое положительных элементом. Вычислить a1 * a2 + a2...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
m-ch
5197 / 744 / 195
Регистрация: 25.02.2011
Сообщений: 1,021
Записей в блоге: 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
891 / 1086 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
03.01.2017, 15:14  [ТС]     Вычислить 7 ^ 77 #3
m-ch
Спасибо! Я в начале хотел было применить массивы,
но подумал, что число не длинное (результат всего
66 знаков). Ну раз так, то еще раз спасибо за программу
и дополнительную информацию!!

Добавлено через 3 минуты
Классный пример, только у QBasic нет такого
размера массивов, да и строк тоже.
bedvit
206 / 76 / 11
Регистрация: 20.05.2016
Сообщений: 322
Записей в блоге: 3
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 Мб, 2 просмотров)
echs
891 / 1086 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
11.01.2017, 13:39  [ТС]     Вычислить 7 ^ 77 #5
bedvit
Спасибо за то, что посетили этот форум и мою
тему в частности. Здесь мало бывает народу.
Считается, что QBasic устарел. НО мало кто понимает,
что на QBasic'е можно создавать сложные программы
такие, где не поможет ни один модный язык. Ведь
задачу решает программист, а язык программирования
лишь инструмент.
bedvit
206 / 76 / 11
Регистрация: 20.05.2016
Сообщений: 322
Записей в блоге: 3
11.01.2017, 14:18     Вычислить 7 ^ 77 #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
echs, Не хочу вас расстраивать, но надстройка написана на С#,С, ассемблере. Даже не на первом моем языке и до сих пор любимом - VBA. VBA (Excel) только использует её. Но все начиналось именно с него. И не могу не согласится с вашим рассуждением - здесь главное программист, а инструменты могут быть разные. Думаю и QBasic вполне конкурентоспособен для своего круга задач, особенно если программист с прямыми руками
echs
891 / 1086 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
11.01.2017, 14:34  [ТС]     Вычислить 7 ^ 77 #7
bedvit
СПАСИБО!! Вы меня ничуть не расстроили.
QBasic никогда не состарится.
Программисты бренны, а программы на QBasic нетленны!!
Yandex
Объявления
11.01.2017, 14:34     Вычислить 7 ^ 77
Ответ Создать тему
Опции темы

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