Sa se calculeze aria unui triunghi cunoscand lungimea fiecarei laturi, a se folosii formula lui Heron si Forma Babiloniala pentru radical. (Assembly)
Răspunsuri la întrebare
Răspuns:
Pentru a calcula aria unui triunghi cunoscand lungimea fiecarei laturi, putem utiliza formula lui Heron sau Forma Babiloniala pentru radical.
Formula lui Heron:
S = sqrt(s * (s - a) * (s - b) * (s - c))
unde:
s = (a + b + c) / 2 (semiperimetrul triunghiului)
a, b, c = lungimile laturilor triunghiului
Exemplu de implementare in Assembly:
section .data
a dd 3
b dd 4
c dd 5
s dd ?
section .text
global _start
_start:
mov eax, a
add eax, b
add eax, c
mov s, eax
shr s, 1 ; s = (a + b + c) / 2
mov eax, s
sub eax, a
mov ebx, s
sub ebx, b
mul ebx
mov ebx, s
sub ebx, c
mul ebx
mul eax
mov eax, s
mul eax
call sqrt ; apelam functia sqrt pentru a calcula radicalul din formula lui Heron
mov [area], eax ; salvam rezultatul in variabila area
; cod pentru afisarea rezultatului
sqrt:
; cod pentru calcularea radicalului folosind Forma Babiloniala
Forma Babiloniala pentru radical:
sqrt(x) = (x + n / x) / 2
unde x este numarul pentru care dorim sa calculam radicalul si n este numarul sub radical.
Exemplu de implementare in Assembly:
section .data
a dd 3
b dd 4
c dd 5
s dd ?
x dd ?
section .text
global _start
_start:
mov eax, a
add eax, b
add eax, c
mov s, eax
shr s, 1 ; s = (a + b + c) / 2
mov eax, s
sub eax, a
mov ebx, s
sub ebx, b
mul ebx
mov ebx, s
sub ebx, c
mul ebx
mul eax
mov x, eax
mov eax, x
add eax, [n]
mov ebx, x
div ebx
shr eax, 1
mov [area], eax ; salvam rezultatul in variabila area
; cod pentru afisarea rezultatului
In ambele exemple, variabila "area" va contine rezultatul final al calculului ariei triunghiului.
Explicație: