Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 2

Перевод из Pascal в VBA (написать макрос)

06.01.2017, 15:53. Показов 2925. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я только знакомлюсь с языком VBA. Мне нужно написать макрос, который будет раскладывать заданное число N на простые множители. Я начал писать макрос сам, но запутался, не понимаю как нужно работать с ячейками на листе. Пожалуйста помогите разобраться с excel'ем!

Вот мой код на языке Pascal:
Pascal
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
procedure factorize(n: longint);
 
var
 
  divisor: longint;
 
begin
 
  divisor := 2;
 
  while divisor * divisor <= n do 
 
    if n mod divisor = 0 then begin
 
      n := n div divisor;
 
      writeln(divisor);
 
    end    
 
    else
 
      inc(divisor);
 
   if n <> 1 then
 
    writeln(n);
 
end;
 
var
 
  n: longint;
 
begin
 
  readln(n);
 
  factorize(n);
 
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2017, 15:53
Ответы с готовыми решениями:

Перевод с Pascal на VBA
Есть сложный код на паскале, нужно перевести на VBA, если это возможно: program interpol; uses crt; const n=10; type tab=array of...

Перевод из Pascal в VBA
Этот код записан в Pascal, помогите его записать в VBA Var x,a,b,h:real; Begin write('Введите : ');readln(a,b); ...

Перевод из Pascal в VBA
Нужно перевести из Pascal в VBA PROGRAM Solution(INPUT, OUTPUT); VAR   num: INTEGER;   n1, n2, n3: INTEGER; BEGIN

4
Заблокирован
06.01.2017, 22:28
Простое число или нет?
1
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 2
06.01.2017, 23:54  [ТС]
Shersh, Нет. Например, число 595=5*7*17.
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
07.01.2017, 03:16
Найти все делители числа 512 — не перевод, но похоже. Прямой перевод делать не возьмусь.

Для развлечения можете вот тут сделать 55 просмотров и более (а то 54 выглядит как-то не по-нашему):
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
PrimeFactors.doc (68.0 Кб, 54 просмотров)
А вот в теме
Цитата Сообщение от echs Посмотреть сообщение
QBasic
на базе Excel есть приложение для разложения (от m-ch):
Цитата Сообщение от m-ch Посмотреть сообщение
Prime.rar (13.3 Кб, 6 просмотров)
Там вложен Prime.xlsm с результатами работы макроса — но на ноутбуке (где нет Ctrl_Break) запускать не советую, ибо расчёт идёт минут 15 (у меня: 855 с).

И на закуску изящное баловство в окне отладчика (Ctrl_G) от m-ch:
Цитата Сообщение от m-ch Посмотреть сообщение
все вычисления менее секунды
0
Заблокирован
07.01.2017, 09:25
Лучший ответ Сообщение было отмечено Sasha_Smirnov как решение

Решение

Цитата Сообщение от __Макс__ Посмотреть сообщение
Shersh, Нет. Например, число 595=5*7*17.
__Макс__, и в самом деле - никуда не годится
m-ch не угадал вашу хотелку и вместо 595 вставил 9999999999999991
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub main()
n$ = 595
MsgBox PrimeFact(n), , n & "="
End Sub
 
Function PrimeFact$(s$) 'число передается в виде текстовой строки, т.к. тип Double не может содкржать более 15 значащих цифр
    Dim i&, txt$, n
    n = CDec(s)
    i = 2
    While CDec(i) * i <= n
        If Fix(n / i) <> n / i Then
            If i = 2 Then i = i + 1 Else i = i + 2
        Else
            n = Fix(n / i)
            txt = txt & "*" & i
        End If
    Wend
    If txt = "" Then PrimeFact = "Prime" Else PrimeFact = Mid$(txt, 2) & "*" & n
End Function
Изображения
 
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2017, 09:25
Помогаю со студенческими работами здесь

Перевод из Pascal в VBA
var s:string; p1,p2:byte; begin writeln('Введите строку, содержащую текст в фигурных скобках:'); readln(s); repeat ...

Перевод из Pascal в VBA
program Begin20; var x1,y1,x2,y2,L: Real; begin Writeln('Введите значение координат певой точки: '); Write('Введите...

Перевод кода из VBA в Pascal
Добрый день, помогите перевести код с VBA на Pascal Очень нужно)) Sub P32() Const Max = 10 Dim delta(Max) As Integer,...

Перевод программы с Pascal в VBA
Помогите перевести в vba Дана действительная квадратная матрица порядка n,где n - нечетное, все элементы которой различны. Найти...

Перевод кодя с Pascal в VBA
Помогите пожалуйста перевести код из Pascal в VBA const N = 5; M = 7; var mx: array of integer; max: integer; i,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru