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

QBasic

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
АББА
133 / 60 / 7
Регистрация: 08.11.2012
Сообщений: 250
#1

Возведение в степень - QBasic

28.01.2013, 00:46. Просмотров 1847. Ответов 25
Метки нет (Все метки)

Надо найти следующее:
9^999999+9^999999
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2013, 00:46     Возведение в степень
Посмотрите здесь:

Длинная арифметика. Возведение в степень - QBasic
даны N и M (N,M >100;N,M <999 ) вычислить по формуле: s=n^m+m^n Добавлено через 1 минуту но только чтобы показала весь ответ

Возвести число в степень - QBasic
Помогите с задачками на циклы. Дано вещественное число A и целое число N(>0). Вывести A в степени N:AN=A*A*...*A (числа A...

Возвести число в степень - QBasic
плиз, прошу помощи в реализации проги, никак не могу придумать алгоритм перевода в СС. Задача такая: возвести число в степень...

Вычислить н-ый степень корня численным методом - QBasic
ВСЕМ ПРИВЕТ:) ПОМОГИТЕ НАЙТИ ОШИБКУ. нужно вычислить н-ый степень корня численным методом, вот моя программа, она выдает ошибку syntax...

Все отрицательные числа матрицы возвести в третью степень - QBasic
Все отрицательные числа возвести в третью степень. Из полученных значений сформировать одномерный массив.

Возвести все отрицательные элементы матрицы в третью степень - QBasic
Дана матрица (или 2хмерный массив, точно уже не помню) 3 на 3 . Все отрицательные числа возвести в 3ю степень. Из полученных значений...

Как возвести в квадрат отрицательные числа и в третью степень положительные - QBasic
Народ кто знает помогите. Дали задачи в технаре ... не могу решить. Аш инересно стало. Если не трудно конечно же вот первая. На ветвление...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vodav
561 / 131 / 19
Регистрация: 12.03.2012
Сообщений: 370
28.01.2013, 08:10     Возведение в степень #2
А какая нужна точность, возможность операций с плавающей точкой?
Апострофф
Заблокирован
28.01.2013, 08:57     Возведение в степень #3
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
DIM i AS LONG, m AS DOUBLE, e AS LONG
m = 2
FOR i = 1 TO 999999
  m = m * 9
  IF m >= 10 THEN
    m = m / 10
    e = e + 1
  END IF
NEXT i
PRINT STR$(m) + "e" + STR$(e)
А считать с точностью до последнего знака мегабайтный массив (тем более строку) жизни не хватит, да и показать (вывести) результат будет та ещё проблема
vodav
561 / 131 / 19
Регистрация: 12.03.2012
Сообщений: 370
29.01.2013, 06:28     Возведение в степень #4
Спасибо, умылся. А я-то хотел по старинке логарифмы заплести. Представил, что для универсального условия S= m^n+k^l это будет оптимальней.
m-ch
5195 / 742 / 195
Регистрация: 25.02.2011
Сообщений: 1,016
Записей в блоге: 1
30.01.2013, 00:50     Возведение в степень #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Апострофф Посмотреть сообщение
А считать с точностью до последнего знака мегабайтный массив (тем более строку) жизни не хватит
Я бы не был столь категоричным, чтобы посчитать все 954242 значащих цифры данного математического выражения у меня, на моем довольно таки слабом компьютере, заняло чуть более часа, павда пришлось немного оптимизировать код.
Делал на VBA
Кликните здесь для просмотра всего текста
Visual Basic
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
Sub www()
    Dim a(250000) As Long, b  As Long, c As Long
    Dim i As Long, j As Long, l As Long, n As Long, m As Long
    Dim t As Single
    
    Open "Output.txt" For Output As #1
    
    n = 249999
    m = 6561
 
    a(0) = 1458
    
    t = Timer
    For i = 1 To n
        j = -1
        While j < l Or c > 0
            j = j + 1
            b = a(j) * m + c
            a(j) = b Mod 10000
            c = b \ 10000
        Wend
        l = j
    Next
    Print #1, a(l) & "";
    For i = 1 To l
        Print #1, Right$("0000" & a(l - i), 4);
    Next
    Close
    Debug.Print Timer - t
End Sub
Вложения
Тип файла: rar Output.rar (405.8 Кб, 21 просмотров)
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
30.01.2013, 01:36     Возведение в степень #6
Ради интереса решил запустить вычисления на плюсах, в реализации с использованием бинарного возведения в степень и одновременной работе с 9 разрядами числа. В итоге вычисление заняло чуть меньше 5 минут, но это все равно слишком долго
m-ch
5195 / 742 / 195
Регистрация: 25.02.2011
Сообщений: 1,016
Записей в блоге: 1
18.01.2016, 02:01     Возведение в степень #7
Цитата Сообщение от m-ch Посмотреть сообщение
у меня, на моем довольно таки слабом компьютере, заняло чуть более часа
Скомпилировал и запустил свой код из 5го поста во FreeBasic
Расчет занял 219 секунд (чуть более 3,5 минут), что достаточно эффективно по сравнению с VBA
i7-3630QM 2.40GHz
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
18.01.2016, 08:23     Возведение в степень #8
Цитата Сообщение от m-ch Посмотреть сообщение
Скомпилировал и запустил свой код из 5го поста во FreeBasic
Расчет занял 219 секунд (чуть более 3,5 минут), что достаточно эффективно по сравнению с VBA
i7-3630QM
Скомпилировал в VB6 этот же код. Результат 128 с. Рвет наш древний VB6 молодой FreeBasic как Тузик грелку!
Про Плюсы вообще не говорю, там позор.
Возведение в степень

Проц у меня вообще i3-2120...
Quiet Snow
4373 / 1235 / 208
Регистрация: 25.04.2010
Сообщений: 3,015
18.01.2016, 20:05     Возведение в степень #9
Рвет наш древний VB6 молодой FreeBasic как Тузик грелку!
Вы хоть сами в это верите, что FB может уступать в 2 раза?
Я вот портил толстый проект, где была жёсткая триггерная логика и дофигище прогонов
по памяти, уступал PB-шной проге точно такой же с точно такой же логикой процента
2-3 максимум, при том что FB-шная прога тормозилась больше своей FBGfx. У PB всё
завёрнуто в макросы и отрабатывало аппаратно. Это при условии, что в FB ничего не
мутил с опциями оптимизации, которые там есть.

Не надо про тузика и грелку, потестите в задачах чуть более навороченных вычислениями
чем данный суррогатный учебный код. Более того нужно уточнять как вы запускаете VB код,
уточнять условия процессор(его разгон, если таковой имеется). И тестить две программы
рядом на одной машине.

Добавлено через 25 минут
Выкладывайте ваши коды на FB и VB, будем смотреть по типам данных.
Ещё бы не помешал exe-шник VB-шный, в IDA заправлю посмотрю и в FB листинг сгенерю.
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
18.01.2016, 21:19     Возведение в степень #10
Цитата Сообщение от Quiet Snow Посмотреть сообщение
потестите в задачах чуть более навороченных вычислениями
чем данный суррогатный учебный код
Тут речь идет о конкретном коде и этот код написан в сообщении №5 под спойлером. А что там у вас и где наворочено известно только вам.
Про проц я написал, i3-2120 и это гораздо более дешёвый проц, чем i7-3630QM. Если допустить, что i7 хуже моего i3 в 2 раза, то эксперимент ни о чем
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ещё бы не помешал exe-шник VB-шный,
А экзешник это всегда пожалуйста, вместе с проектом.
Я бы тоже для чистоты эксперимента на своей машине прогнал exe-шник FB, тогда уже можно было бы точно сказать, что быстрее.
Вложения
Тип файла: zip Степень.zip (4.5 Кб, 9 просмотров)
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
18.01.2016, 21:51     Возведение в степень #11
Похоже чуда не произошло, и мой процессор реально хуже чем i7. Скомпилировал этот же код в режиме консоли на FB build 1.00, вот итог - 475 секунд против 128 на VB6.
В защиту FB могу сказать, что компилировал без каких либо специальных настроек, прямо как есть на скрине:
Миниатюры
Возведение в степень  
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
18.01.2016, 21:54     Возведение в степень #12
Да, выходной файл и FB и VB6 формируют одинаковый, так что ошибки в коде или там иные хитрости исключены - результат работы одинаковый, а вот время увы...
Вложения
Тип файла: zip Samples.zip (18.7 Кб, 14 просмотров)
The trick
Модератор
6934 / 2398 / 741
Регистрация: 22.02.2013
Сообщений: 3,449
Записей в блоге: 74
18.01.2016, 22:13     Возведение в степень #13
Кинь пожалуйста EXE от FB.
Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
18.01.2016, 22:26     Возведение в степень #14
Цитата Сообщение от The trick Посмотреть сообщение
EXE от FB
Вставил выше в сообщение
The trick
Модератор
6934 / 2398 / 741
Регистрация: 22.02.2013
Сообщений: 3,449
Записей в блоге: 74
18.01.2016, 22:44     Возведение в степень #15
Думаю тут все понятно:
Возведение в степень
m-ch
5195 / 742 / 195
Регистрация: 25.02.2011
Сообщений: 1,016
Записей в блоге: 1
19.01.2016, 04:09     Возведение в степень #16
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Похоже чуда не произошло, и мой процессор реально хуже чем i7. Скомпилировал этот же код в режиме консоли на FB build 1.00, вот итог - 475 секунд против 128 на VB6.
Не уверен, что мой i7 намного лучше.
Запустил Ваш файл скомпилированный на VB6 на своем компьютере, время выполнения - 126 секунд
Ваш файл, скомпилированный в FreeBasic - 396 секунд

При этом я пользовался компилятором FreBasic-1.04-0-win64
Для сравнения скомпилировал под win32 и win64:
FreBasic-1.04-0-win32 - 398 секунд
FreBasic-1.04-0-win64 - 220 секунд
Все настройки компиляторов по умолчанию, никаких изменений в код программы не вносилось (изменение типов и т.п.)

exe файлы во вложении
Вложения
Тип файла: zip stp32-64.zip (38.5 Кб, 0 просмотров)
m-ch
5195 / 742 / 195
Регистрация: 25.02.2011
Сообщений: 1,016
Записей в блоге: 1
19.01.2016, 06:28     Возведение в степень #17
на VBA (Excel) данный код выполняется у меня 20 минут.

Исходя из результатов данного теста, может быть пока и не буду переезжать на FreeBasic.
Есть проекты, которые требуют много вычислительных ресурсов, хотел их перенести из VBA в более быструю среду, оказывается, что VB6 не так уж и плох, тем более, что на VB (VBA) писать и отлаживать код мне намного легче.

Не по теме:

Вопрос к специалистам, на сколько легко реализуется многопоточность в FreeBasic?

Pro_grammer
Модератор
5914 / 2074 / 399
Регистрация: 24.04.2011
Сообщений: 3,514
Записей в блоге: 10
19.01.2016, 10:09     Возведение в степень #18
Цитата Сообщение от Pro_grammer Посмотреть сообщение
на FB build 1.00, вот итог - 475 секунд
Для полной ясности тот же код перенёс на PureBasic.
Время выполнения 457 с. В принципе, так же как и у FreeBasic.
Как так то, почему же VB6 в 3 раза оказался быстрее в голых вычислениях?
Или вернее, почему так плохо оптимизированы трансляторы-компиляторы в FB и PB?
Вложения
Тип файла: zip stepenPB.zip (5.7 Кб, 8 просмотров)
The trick
Модератор
6934 / 2398 / 741
Регистрация: 22.02.2013
Сообщений: 3,449
Записей в блоге: 74
19.01.2016, 10:51     Возведение в степень #19
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Как так то, почему же VB6 в 3 раза оказался быстрее в голых вычислениях?
Потому что вб активно использует регистры и меньше обращается к памяти.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2016, 21:46     Возведение в степень
Еще ссылки по теме:

Возвести в квадрат те числа, значения которых неотрицательны, и в четвертую степень — отрицательные - QBasic
1. Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвертую степень — отрицательные. ...

Все отрицательные числа возвести в третью степень. Из полученных значений сформировать одномерный массив - QBasic
Все отрицательные числа возвести в третью степень. Из полученных значений сформировать одномерный массив. желательно чтобы ввод чисел...

Возведение в степень - Prolog
Доброго времени суток. Есть задача, на Turbo Prolog: Возвести вещественное число a в целую степень n (n может быть положительной,...

Возведение в степень - C++ Builder
Собственно вопрос, нужно написать эту функцию Как это реализовать в С++ то есть возведение в степень

Возведение в степень - Assembler
Доброго времени суток. Имеется число 3.3 например. Нужно его возвести в степень 0.45. Как реализовать? Есть специальная команда...


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

Или воспользуйтесь поиском по форуму:
m-ch
5195 / 742 / 195
Регистрация: 25.02.2011
Сообщений: 1,016
Записей в блоге: 1
19.01.2016, 21:46     Возведение в степень #20
Поэкспериментировал с типом данных в FB, изменил алгоритм вычисления
фактически вычисляется не 2*9^3*(9^4)^249999 как было реализовано первоначально, а 2*(9^9)^111111
Использовал тип данных ULongInt для хранения длинного числа
Для чистоты эксперимента подсчет времени выполнения сделал без учета записи на диск:
Кликните здесь для просмотра всего текста
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
DIM AS ULongInt a(120000), b, c, m
DIM AS LONG i, j, l, n
DIM AS SINGLE t1, t2
    
n = 111111
m = 9 ^ 9
a(0) = 2
t1 = TIMER
FOR i = 1 TO n
    j = -1
    WHILE j < l OR c > 0
        j = j + 1
        b = a(j) * m + c
        a(j) = b MOD 1000000000
        c = b \ 1000000000
    WEND
    l = j
NEXT
t2 = TIMER
OPEN "Output.txt" FOR OUTPUT AS #1
PRINT #1,a(l) & "";
FOR i = 1 TO l
    PRINT #1,RIGHT$("000000000" & a(l - i), 9);
NEXT
CLOSE
PRINT t2 - t1
SLEEP

Время выполнения сильно зависит, каким компилятором создан файл (x32 или x64)
x64 - 38 секунд
x32 - 178 секунд
Что удивило, что под 32 разрядную систему расчет выполняется более чем в 4 раза медленнее
Вложения
Тип файла: zip stpFB2.zip (20.8 Кб, 4 просмотров)
Yandex
Объявления
19.01.2016, 21:46     Возведение в степень
Ответ Создать тему
Опции темы

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