1 (изменено: serzh82saratov, 2014-04-26 23:06:16)

Тема: AHK: Соотношение чисел

Видимо моск отказывает, но как получить соотношение чисел не соображу.
Например:


w = 640
h = 480

***

ratio = 4 / 3
MsgBox % ratio

640 к 480 относится также как 4 к 3, ну Вы меня поняли

То есть суть: найти общий делитель.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2 (изменено: serzh82saratov, 2014-04-26 23:50:34)

Re: AHK: Соотношение чисел

Вроде дошло


w = 1280
h = 720
 
a := mod(w, h)

While a
    b := a, a := mod(w, a)  
While b
    c := b, b := mod(h, b)  
MsgBox %  w // c " / " h // c

Хотя может есть способ проще...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Соотношение чисел

А нет, что то не то:

 
w = 720  
h = 1280

4 / 8 ???

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Соотношение чисел

Если я правильно понял задачу:

a := 1920, b := 1080

While (N:=Nod(a,b)) <> 1
   a //=N, b//=N
MsgBox % a . " / " . b
Return

Nod(a,b)
{
  Return !b ? a : Nod(b, mod(a,b))
}

5

Re: AHK: Соотношение чисел

Irbis
ШиКаРно! 5+

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Соотношение чисел

Нет правда, отличный урок с рекурсией, спасибо. Я бы не придумал.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Соотношение чисел

Не за что, тем более что я просто взял практически готовый алгоритм на СРР и перенес на АНК

8

Re: AHK: Соотношение чисел

Irbis пишет:

Если я правильно понял задачу:

a := 1920, b := 1080

While (N:=Nod(a,b)) <> 1
   a //=N, b//=N
MsgBox % a . " / " . b
Return

Nod(a,b)
{
  Return !b ? a : Nod(b, mod(a,b))
}

Не совсем понятно, зачем здесь

While (N:=Nod(a,b)) <> 1
   a //=N, b//=N

??

a := 3, b := 7
nod := Nod(a,b)
MsgBox, % a//nod . "/" . b//nod

Nod(a,b)
{
  Return !b ? a : Nod(b, mod(a,b))
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Соотношение чисел

Да, что-то я упустил, после сокращения дроби на НОД числа будут взаимно простые, и while не нужен.