Mejoremos este codigo
- Inicie sesión o regístrese para enviar comentarios
Hola adictos escribí el siguiente programa usando debug4x que
toma una lista con los vértices de un polígono escritos como números
complejos y en sentido antihorario finalizando con el mismo puntos que se comenzó y calcula su perímetro su centroide y los momentos de
inercia respecto a los ejes X y Y y además los momentos de inercia
centroidales paralelos a los ejes X y Y:
{ (X1,Y1) (X2,Y2) (X3,Y3) ... (X1,Y1) } --> Perimetro Area x y Ix Ix Ixc Iyc, el codigo es:
RPL
::
CK&DISPATCH1
BINT5 ( se verifica que exista una lista en el primer nivel de la pila )
::
{{ M }} ( se guarda la lisita en M )
( se comprueba que todos los elementos de la lista sean numeros complejos )
TRUE
M LENCOMP #1+_ONE_DO
M INDEX@ NTHCOMPDROP TYPECMP? AND
LOOP
( si todos los elementos de la lista son complejos)
ITE
::
{ 0. 0. 0. 0. 0. 0. }
M LENCOMP ONE_DO
M INDEX@ NTHCOMPDROP C%>%
M INDEX@ #1+ NTHCOMPDROP C%>%
0. 0.
{{ X1 Y1 X2 Y2 m b }}
::
X1 X2 %= case :: Y2 Y1 %- %ABS 0. 0. 0. 0. 0. ;
Y1 Y2 %= case :: X2 X1 %- %ABS
Y1 X1 X2 %- %*
Y1 2. %/ X1 %SQ_ X2 %SQ_ %- %*
Y1 %SQ_ 2. %/ X1 X2 %- %*
Y1 3. %^ 3. %/ X1 X2 %- %*
Y1 3. %/ X1 3. %^ X2 3. %^ %- %*
;
Y2 Y1 %- X2 X1 %- %/ !m
Y1 m X1 %* %- !b
Y2 Y1 %- %SQ_ X2 X1 %- %SQ_ %+ %SQRT
m 2. %/ X1 %SQ_ X2 %SQ_ %- %* b X1 X2 %- %* %+
m 3. %/ X1 3. %^ X2 3. %^ %- %* b 2. %/ X1 %SQ_ X2 %SQ_ %- %* %+
m X1 %* b %+ 3. %^ m X2 %* b %+ 3. %^ %- 6. m %* %/
m X1 %* b %+ 4. %^ m X2 %* b %+ 4. %^ %- 12. m %* %/
m 4. %/ X1 4. %^ X2 4. %^ %- %* b 3. %/ X1 3. %^ X2 3. %^ %- %* %+
;
#6 {}N
BINT7 ONE_DO
DUP CARCOMP SWAP CDRCOMP SWAPROT DUP CARCOMP ROT %+
>TCOMP CDRCOMP SWAP
LOOP
DROP
ABND
LOOP
INNERCOMP DROP
{{ P A MY MX IX IY }}
P
A
MY A %/
MX A %/ %>C%
IX
IY
IX A MX A %/ %SQ_ %* %-
IY A MY A %/ %SQ_ %* %-
BINT7 {}N
ABND
ABND
;
( si es que alguno de los elementos de la lista no es un numero complejo)
::
"revisa la lista"
BINT20
BINT10
GROB 00026 70000B00000A0004000F00A410C0308F100900
{ NullMenuKey NullMenuKey NullMenuKey NullMenuKey NullMenuKey
{ "ok" :: TakeOver FLASHPTR DoMKeyOK ; } } ERRBEEP
ROMPTR DoMsgBox
DROP
M
;
;
;
Y por eso escribí "mejoremos este código", el programa corre bien pero seguro que se le puede hacer muchas mejoras, estaré esperando sus comentarios chau y Feliz navidad a todos
- Inicie sesión o regístrese para enviar comentarios
Otros temas de interes
- como hacer una barra de menus ??
- GROBs en la hp50g ..
- Nueva Calculadora HP?? HP 39gII spécification
- ROM 2.10-7 Spreadsheet & Geometry manuales y biblioteca.
- Ayuda con Raices
- [PROYECTOS] EoEiProEngLib, MathEngProLib, EquatnEngProLib & and HP50GNKLib
- ayuda con integral exponencial
- programa tipo excell que permita introducir formulas en las tablas
- como aprender tantos comandos en SYSTEM?
He optimizado la parte de verificación de una lista que contiene números reales.
!NO CODE !RPL
::
{{ M }}
M INNERCOMP TRUESWAP_
ZERO_DO
SWAP TYPEREAL? AND
LOOP ABND
;
@Es mejor manejar una sola vez los objetos en la pila que estar extrayendo a cada momento... Quisiera seguir con la verificación pero no entiendo bien la estructura. Le recomiendo use los BBCODE de código, para mejorar el orden de la visualización.- Gaak -
- Inicie sesión o regístrese para enviar comentarios








