Что нового

Расчет пропорций тела по формуле Джоя Маккалума

Mr. Anderson

Новичок
Сообщения
122
Репутация
4
AutoIt: 3.3.6.0
Версия: 1.0

Категория: Разное

Описание: Программа рассчитывает пропорции тела по формуле Джоя Маккалума исходя из обхвата кисти.
Так же считает сколько вам не хватает в обхвате по параметрам грудь, бедра, талия, предплечье, шея, бицепс, икра, бедро. Их значения придется ввести.
Так же некий коэффициент асимметрии тела. (сам придумал, но прикольно)
Программа считает на лету, поэтому кнопки "Посчитать" нету. Однако имеется кнопка "Обнулить" для удобного ввода новых значений.

Код: Исходник
Код:
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=E:\flash 2010.07.08\Koda\Forms\mac.kxf
$Form1 = GUICreate("Формула Джоя Маккалума; кодинг ©дядя Олег", 513, 442, 193, 113)
$Label1 = GUICtrlCreateLabel("Определение пропорций тела по формуле Джоя Маккалума:", 8, 8, 314, 17)
$Label2 = GUICtrlCreateLabel("Объем запястья:", 8, 32, 92, 17)
$Input1 = GUICtrlCreateInput("0", 104, 32, 89, 21)
$Group1 = GUICtrlCreateGroup("Расчет по формуле:", 8, 56, 145, 217)
$Label3 = GUICtrlCreateLabel("Грудь:", 16, 72, 36, 17)
$Input2 = GUICtrlCreateInput("0", 88, 72, 49, 21)
$Label4 = GUICtrlCreateLabel("Таз:", 16, 96, 26, 17)
$Label5 = GUICtrlCreateLabel("Талия:", 16, 120, 38, 17)
$Label6 = GUICtrlCreateLabel("Бедро:", 16, 144, 38, 17)
$Label7 = GUICtrlCreateLabel("Шея:", 16, 168, 28, 17)
$Label8 = GUICtrlCreateLabel("Бицепс:", 16, 192, 44, 17)
$Label9 = GUICtrlCreateLabel("Икра:", 16, 216, 33, 17)
$Label10 = GUICtrlCreateLabel("Предплечье:", 16, 240, 68, 17)
$Input3 = GUICtrlCreateInput("0", 88, 96, 49, 21)
$Input4 = GUICtrlCreateInput("0", 88, 120, 49, 21)
$Input5 = GUICtrlCreateInput("0", 88, 144, 49, 21)
$Input6 = GUICtrlCreateInput("0", 88, 168, 49, 21)
$Input7 = GUICtrlCreateInput("0", 88, 192, 49, 21)
$Input8 = GUICtrlCreateInput("0", 88, 216, 49, 21)
$Input9 = GUICtrlCreateInput("0", 88, 240, 49, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Введите ваши данные:", 159, 56, 145, 217)
$Label11 = GUICtrlCreateLabel("Грудь:", 167, 72, 36, 17)
$Input10 = GUICtrlCreateInput("0", 239, 72, 49, 21)
$Label12 = GUICtrlCreateLabel("Таз:", 167, 96, 26, 17)
$Label13 = GUICtrlCreateLabel("Талия:", 167, 120, 38, 17)
$Label14 = GUICtrlCreateLabel("Бедро:", 167, 144, 38, 17)
$Label15 = GUICtrlCreateLabel("Шея:", 167, 168, 28, 17)
$Label16 = GUICtrlCreateLabel("Бицепс:", 167, 192, 44, 17)
$Label17 = GUICtrlCreateLabel("Икра:", 167, 216, 33, 17)
$Label18 = GUICtrlCreateLabel("Предплечье:", 167, 240, 68, 17)
$Input11 = GUICtrlCreateInput("0", 239, 96, 49, 21)
$Input12 = GUICtrlCreateInput("0", 239, 120, 49, 21)
$Input13 = GUICtrlCreateInput("0", 239, 144, 49, 21)
$Input14 = GUICtrlCreateInput("0", 239, 168, 49, 21)
$Input15 = GUICtrlCreateInput("0", 239, 192, 49, 21)
$Input16 = GUICtrlCreateInput("0", 239, 216, 49, 21)
$Input17 = GUICtrlCreateInput("0", 239, 240, 49, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Разница в процентах:", 311, 56, 193, 265)
$Label19 = GUICtrlCreateLabel("Грудь:", 319, 72, 36, 17)
$Input18 = GUICtrlCreateInput("0", 391, 72, 49, 21)
$Label20 = GUICtrlCreateLabel("Таз:", 319, 96, 26, 17)
$Label21 = GUICtrlCreateLabel("Талия:", 319, 120, 38, 17)
$Label22 = GUICtrlCreateLabel("Бедро:", 319, 144, 38, 17)
$Label23 = GUICtrlCreateLabel("Шея:", 319, 168, 28, 17)
$Label24 = GUICtrlCreateLabel("Бицепс:", 319, 192, 44, 17)
$Label25 = GUICtrlCreateLabel("Икра:", 319, 216, 33, 17)
$Label26 = GUICtrlCreateLabel("Предплечье:", 319, 240, 68, 17)
$Input19 = GUICtrlCreateInput("0", 391, 96, 49, 21)
$Input20 = GUICtrlCreateInput("0", 391, 120, 49, 21)
$Input21 = GUICtrlCreateInput("0", 391, 144, 49, 21)
$Input22 = GUICtrlCreateInput("0", 391, 168, 49, 21)
$Input23 = GUICtrlCreateInput("0", 391, 192, 49, 21)
$Input24 = GUICtrlCreateInput("0", 391, 216, 49, 21)
$Input25 = GUICtrlCreateInput("0", 391, 240, 49, 21)
$Input26 = GUICtrlCreateInput("0", 448, 72, 49, 21)
$Input27 = GUICtrlCreateInput("0", 448, 96, 49, 21)
$Input28 = GUICtrlCreateInput("0", 448, 120, 49, 21)
$Input29 = GUICtrlCreateInput("0", 448, 144, 49, 21)
$Input30 = GUICtrlCreateInput("0", 448, 168, 49, 21)
$Input31 = GUICtrlCreateInput("0", 448, 192, 49, 21)
$Input32 = GUICtrlCreateInput("0", 448, 216, 49, 21)
$Input33 = GUICtrlCreateInput("0", 448, 240, 49, 21)
$Label27 = GUICtrlCreateLabel("Коэф. ассиметрии:", 320, 272, 101, 17)
$Input34 = GUICtrlCreateInput("0", 424, 272, 73, 21)
$Label28 = GUICtrlCreateLabel("Средняя разница:", 320, 296, 95, 17)
$Button1 = GUICtrlCreateButton("Обнулить!", 160, 280, 145, 17, 0)
$Input35 = GUICtrlCreateInput("0", 424, 296, 73, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Edit1 = GUICtrlCreateEdit("", 8, 328, 497, 105)
GUICtrlSetData(-1, StringFormat("Запястье надо измерять чуть выше косточки, выступающей на нем со стороны мизинца"& @CRLF &"(шиловидного отростка локтевой кости), то есть ближе к локтю - так советует сам"& @CRLF &"Маккалум. Из любого правила есть исключения. В идеале между толщиной запястья"& @CRLF &"и длиной, толщиной всех прочих костей действительно есть статистическая"& @CRLF &"закономерность."& @CRLF &"© Стюарт МакРоберт "&Chr(34)&"Думай 2"&Chr(34)&""))
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetState($Input1,$GUI_FOCUS)
GUISetState(@SW_SHOW)
GUIRegisterMsg(0x0111, "ToButton")
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
	Case $GUI_EVENT_CLOSE
		Exit
	Case $Button1
		For $i = 10 to 17 Step 1
			GUICtrlSetData(Eval("Input" & $i), 0)
		Next
EndSwitch
WEnd

Func ToButton()
		DoButton1()
EndFunc

Func DoButton1()
	If GUICtrlRead($Input1) > 0 Then
			;Расчет сколько должна быть грудь
			$iNeedGrud = Round(GUICtrlRead($Input1) * 6.5, 1)
			GUICtrlSetData($Input2, $iNeedGrud)
			;Расчет таза
			$iNeedTaz = Round($iNeedGrud * 0.85, 1)
			GUICtrlSetData($Input3, $iNeedTaz)
			;Расчет талии
			$iNeedTalia = Round($iNeedGrud * 0.7, 1)
			GUICtrlSetData($Input4, $iNeedTalia)
			;Расчет бедра
			$iNeedBedro = Round($iNeedGrud * 0.53, 1)
			GUICtrlSetData($Input5, $iNeedBedro)
			;Расчет шеи
			$iNeedSheia = Round($iNeedGrud * 0.37, 1)
			GUICtrlSetData($Input6, $iNeedSheia)
			;Расчет бицепса
			$iNeedBiceps = Round($iNeedGrud * 0.36, 1)
			GUICtrlSetData($Input7, $iNeedBiceps)
			;Расчет икры
			$iNeedIkra = Round($iNeedGrud * 0.34, 1)
			GUICtrlSetData($Input8, $iNeedIkra)
			;Расчет предплечье
			$iNeedPredp = Round($iNeedGrud * 0.29, 1)
			GUICtrlSetData($Input9, $iNeedPredp)

			;Разница груди
			$iSubGrudCm = Round($iNeedGrud - GUICtrlRead($Input10), 2)
			$iSubGrudPr = Round(100 - ((GUICtrlRead($Input10) * 100) / $iNeedGrud),2)
			If GUICtrlRead($Input10) > 1 Then
				GUICtrlSetData($Input18, $iSubGrudPr)
				GUICtrlSetData($Input26, $iSubGrudCm)
			EndIf
			
			;Разница таза
			$iSubTazCm = Round($iNeedTaz - GUICtrlRead($Input11), 2)
			$iSubTazPr = Round(100 - ((GUICtrlRead($Input11) * 100) / $iNeedTaz),2)
			If GUICtrlRead($Input11) > 1 Then
				GUICtrlSetData($Input19, $iSubTazPr)
				GUICtrlSetData($Input27, $iSubTazCm)
			EndIf
			
			;Разница талии
			$iSubTaliaCm = Round($iNeedTalia - GUICtrlRead($Input12), 2)
			$iSubTaliaPr = Round(100 - ((GUICtrlRead($Input12) * 100) / $iNeedTalia),2)
			If GUICtrlRead($Input12) > 1 Then
				GUICtrlSetData($Input20, $iSubTaliaPr)
				GUICtrlSetData($Input28, $iSubTaliaCm)
			EndIf
			
			;Разница бедра
			$iSubBedroCm = Round($iNeedBedro - GUICtrlRead($Input13), 2)
			$iSubBedroPr = Round(100 - ((GUICtrlRead($Input13) * 100) / $iNeedBedro),2)
			If GUICtrlRead($Input13) > 1 Then
				GUICtrlSetData($Input21, $iSubBedroPr)
				GUICtrlSetData($Input29, $iSubBedroCm)
			EndIf
			
			;Разница шеи
			$iSubSheiaCm = Round($iNeedSheia - GUICtrlRead($Input14), 2)
			$iSubSheiaPr = Round(100 - ((GUICtrlRead($Input14) * 100) / $iNeedSheia),2)
			If GUICtrlRead($Input14) > 1 Then
				GUICtrlSetData($Input22, $iSubSheiaPr)
				GUICtrlSetData($Input30, $iSubSheiaCm)
			EndIf
			
			;Разница бицепса
			$iSubBicepsCm = Round($iNeedBiceps - GUICtrlRead($Input15), 2)
			$iSubBicepsPr = Round(100 - ((GUICtrlRead($Input15) * 100) / $iNeedBiceps),2)
			If GUICtrlRead($Input15) > 1 Then
				GUICtrlSetData($Input23, $iSubBicepsPr)
				GUICtrlSetData($Input31, $iSubBicepsCm)
			EndIf
			
			;Разница икры
			$iSubIkraCm = Round($iNeedIkra - GUICtrlRead($Input16), 2)
			$iSubIkraPr = Round(100 - ((GUICtrlRead($Input16) * 100) / $iNeedIkra),2)
			If GUICtrlRead($Input16) > 1 Then
				GUICtrlSetData($Input24, $iSubIkraPr)
				GUICtrlSetData($Input32, $iSubIkraCm)
			EndIf
			
			;Разница предплечья
			$iSubPredpCm = Round($iNeedPredp - GUICtrlRead($Input17), 2)
			$iSubPredpPr = Round(100 - ((GUICtrlRead($Input17) * 100) / $iNeedPredp),2)
			If GUICtrlRead($Input17) > 1 Then
				GUICtrlSetData($Input25, $iSubPredpPr)
				GUICtrlSetData($Input33, $iSubPredpCm)
			EndIf
			
			;Коэффициент ассиметрии
			$iKoefAssim = Round((($iSubGrudPr + $iSubTazPr + $iSubTaliaPr + $iSubBedroPr + $iSubSheiaPr + $iSubBicepsPr + $iSubIkraPr + $iSubPredpPr) / 8)*10, 4)
			GUICtrlSetData($Input34, $iKoefAssim)
			$iSredSub = Round((($iSubGrudPr + $iSubTazPr + $iSubTaliaPr + $iSubBedroPr + $iSubSheiaPr + $iSubBicepsPr + $iSubIkraPr + $iSubPredpPr) / 8), 4)
			GUICtrlSetData($Input35, $iSredSub)
		Else
			$iInputKist = InputBox("Введите объем кисти", "Необходимо ввести объем кисти", 0)
			GUICtrlSetData($Input1, $iInputKist)
			GUICtrlSetState($Input1, $GUI_FOCUS)
		EndIf
EndFunc

Func AllInput()
	Local $iGoodInput = 1
	
	For $i = 10 to 17 Step 1
		If GUICtrlRead(Eval("Input" & $i)) < 1 Then
			$iGoodInput = 0
		EndIf
	Next

	Return $iGoodInput		
EndFunc

Скриншот(ы):


Источник: Расчет пропорций тела по формуле Джоя Маккалума
Автор: Mr. Anderson
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Интересно, для М. и Ж. разница какая-нибудь в программе есть, или это универсальные формулы?
 
Автор
M

Mr. Anderson

Новичок
Сообщения
122
Репутация
4
В книге Стюарта Макроберта "Думай 2", откуда взяты формулы для рассчета об этом ничего не сказано. Скорее это только для мужчин, хотя как знать... :-\

P.S. Коэффициент ассиметрии думаю переделать на досуге. Формула оказалось не правильной :whistle:
 
Верх