HonradosHP
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

No encuentro el error en este programa.

2 participantes

Ir abajo

No encuentro el error en este programa. Empty No encuentro el error en este programa.

Mensaje  0OMME Lun Nov 07, 2011 7:47 am

He realizado un programa que:
- Una vez introducido un círculo definido por su punto de inicio con el punto kilométrico en metros, coordenadas x,y de inicio, acimut de inicio y radio.
- Introduces las coordenadas de un punto cualquiera x,y y te calcula la distancia desde el punto inicial del círculo, la distancia en perpendicularal al círculo, su intersección , y el acimut en la intersección con el círculo.

Mi problema es el siguiente: realizo el programa con variables globales y funciona perfectamente, pero cuando lo realizo con variables locales falla, me sale el error
STR ->Error: INVALID SYNTAX. (el mismo error tanto en HP50 como en HP48)

He revisado el código varias veces, pero no encuentro el error, agradecería vuestra ayuda.

El código del programa es (copiado y pegado desde HPUserEdit):
«
CLEAR GRAD "DATOS INICIO CIRCULO"
{{"PK1"}
{"X1"}
{"Y1"}
{"•1" "Acimut"}
{"R(+ -)" "+:derecha -: izquierda"}
}{ 2. 0. } { } {0 0 0 0 0 } INFORM DROP LIST
DROP  PK1 X1 Y1 •1 R

« 1 1000 FOR i
"Punto nÚmero " i + ":" +
{":X:
:Y:" { 1 0 } V } INPUT OBJ  X2 Y2
« 'X1+ABS(R)*SIN(•1+SIGN(R)*100)' NUM  XC
« 'Y1+ABS(R)*COS(•1+SIGN(R)*100)' NUM  YC
« IF 'X2==XC' THEN
X2 DUP  X3 X4
« 1  A
« '-2*YC' NUM  B
« '-R^2+YC^2' NUM  C
« '(-B+((B^2-4*A*C)^(1/2)))/(2*A)' NUM  Y3
« '(-B-((B^2-4*A*C)^(1/2)))/(2*A)' NUM  Y4
« 'ABS(Y3-Y2)' NUM  D23
« 'ABS(Y4-Y2)' NUM  D24
« IF 'D23‰D24' THEN X3 Y3 D23  XI YI D2I
ELSE X4 Y4 D24  XI YI D2I END
ELSE
« '(Y2-YC)/(X2-XC)' NUM  m
« 'YC-m*XC' NUM  b1
« '1+m^2' NUM  A
« '(2*b1*m)-(2*XC)-(2*YC*m)' NUM  B
« '(XC^2)+(b1^2)+(YC^2)-(2*YC*b1)-R^2' NUM  C
« '(-B+((B^2-4*A*C)^(1/2)))/(2*A)' NUM  X3
« '(m*X3)+b1' NUM  Y3
« '(-B-((B^2-4*A*C)^(1/2)))/(2*A)' NUM  X4
« '(m*X4)+b1' NUM  Y4
« '(((X3-X2)^2+(Y3-Y2)^2)^(1/2))' NUM  D23
« '(((X4-X2)^2+(Y4-Y2)^2)^(1/2))' NUM  D24
« IF 'D23‰D24' THEN X3 Y3 D23  XI YI D2I
ELSE X4 Y4 D24  XI YI D2I END
END
« 'ATAN((XI-XC)/(YI-YC))'  •
« CASE 'XI-XC>0 AND YI-YC>0'
THEN • END
'XI-XC>0 AND YI-YC<0'
THEN '200+•' END
'XI-XC<0 AND YI-YC<0'
THEN '200+•' END
'XI-XC<0 AND YI-YC>0'
THEN '400+•' END
'YI-YC==0 AND XI>XC'
THEN 100 END
'YI==YC AND XI<XC'
THEN 300 END
'XI==XC AND YI<YC'
THEN 200 END
'XI==XC AND YI>YC'
THEN 0 END
END NUM  •CI
« IF '•CI+SIGN(R)*100Š400' THEN
'•CI+SIGN(R)*100-400' NUM  •I
ELSE '•CI+SIGN(R)*100' NUM  •I END
« '•1+SIGN(R)*100 +200' NUM  •C1
« IF '400-SIGN(R)*•C1+SIGN(R)*•CI Š400' THEN
'-SIGN(R)*•C1+SIGN(R)*•CI' NUM  Œ
ELSE '400-SIGN(R)*•C1+SIGN(R)*•CI' NUM  Œ END
« '(Œ*‡/200)*ABS(R)' NUM  L
« 'PK1+L' NUM  PK
« 'ATAN((X2-XI)/(Y2-YI))'  G
« CASE 'X2-XI>0 AND Y2-YI>0'
THEN G END
'X2-XI>0 AND Y2-YI<0'
THEN '200+G' END
'X2-XI<0 AND Y2-YI<0'
THEN '200+G' END
'X2-XI<0 AND Y2-YI>0'
THEN '400+G' END
'Y2-YI==0 AND X2>XI'
THEN 100 END
'Y2==YI AND X2<XI'
THEN 300 END
'X2-XI==0 AND Y2<YI'
THEN 200 END
'X2-XI==0 AND Y2>YI'
THEN 0 END
END NUM  •I2
« IF '•I2Š•I' THEN 1  S
ELSE -1  S END
« CLLCD
PK 3 RND "PK" TAG 1 DISP
'D2I*S' NUM 3 RND "D" TAG 2 DISP
XI NUM 3 RND "XI" TAG 3 DISP
YI NUM 3 RND "YI" TAG 4 DISP
•I NUM 3 RND "•I" TAG 5 DISP
0 WAIT DROP
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
NEXT »
»


Gracias.
0omme
PD:Ya se que el programa funciona mejor con comandos de pila en vez de realizar todo en algebraico, pero así yo me aclaro mejor.
0OMME
0OMME
Baby HP
Baby HP

Cantidad de envíos : 4
Calculadora : HP 48
ROM : HP 48-?

Volver arriba Ir abajo

No encuentro el error en este programa. Empty Re: No encuentro el error en este programa.

Mensaje  Julio Caballero Jue Nov 10, 2011 2:17 pm

Para que alguien pueda ayudarte en la depuración de tu código, deberás usar el botón código que se encuentra en la barra de herramientas cuando publicas un mensaje en el foro.

- Selecciona el texto de tu código.
- Luego presiona el botón "CODIGO" que está en la barra de herramientas.

Por ejemplo, se podria ver asi:

Código:
«
CLEAR GRAD "DATOS INICIO CIRCULO"
{{"PK1"}
{"X1"}
{"Y1"}
{"•1" "Acimut"}
{"R(+ -)" "+:derecha -: izquierda"}
}{ 2. 0. } { } {0 0 0 0 0 } INFORM
...
...
Julio Caballero
Julio Caballero
Junior HP
Junior HP

Cantidad de envíos : 39
Localización : Perú
Calculadora : HP 50g
ROM : 2.09

Volver arriba Ir abajo

No encuentro el error en este programa. Empty Re: No encuentro el error en este programa.

Mensaje  0OMME Jue Nov 10, 2011 5:09 pm

Gracias Julio, a ver si ahora está mejor:


Código:
«
CLEAR GRAD "DATOS INICIO CIRCULO"
{{"PK1"}
{"X1"}
{"Y1"}
{"•1" "Acimut"}
{"R(+ -)" "+:derecha -: izquierda"}
}{ 2. 0. } { } {0 0 0 0 0 } INFORM DROP LIST
DROP  PK1 X1 Y1 •1 R

« 1 1000 FOR i
"Punto nÚmero " i + ":" +
{":X:
:Y:" { 1 0 } V } INPUT OBJ  X2 Y2
« 'X1+ABS(R)*SIN(•1+SIGN(R)*100)' NUM  XC
« 'Y1+ABS(R)*COS(•1+SIGN(R)*100)' NUM  YC
« IF 'X2==XC' THEN
X2 DUP  X3 X4
« 1  A
« '-2*YC' NUM  B
« '-R^2+YC^2' NUM  C
« '(-B+((B^2-4*A*C)^(1/2)))/(2*A)' NUM  Y3
« '(-B-((B^2-4*A*C)^(1/2)))/(2*A)' NUM  Y4
« 'ABS(Y3-Y2)' NUM  D23
« 'ABS(Y4-Y2)' NUM  D24
« IF 'D23‰D24' THEN X3 Y3 D23  XI YI D2I
ELSE X4 Y4 D24  XI YI D2I END
ELSE
« '(Y2-YC)/(X2-XC)' NUM  m
« 'YC-m*XC' NUM  b1
« '1+m^2' NUM  A
« '(2*b1*m)-(2*XC)-(2*YC*m)' NUM  B
« '(XC^2)+(b1^2)+(YC^2)-(2*YC*b1)-R^2' NUM  C
« '(-B+((B^2-4*A*C)^(1/2)))/(2*A)' NUM  X3
« '(m*X3)+b1' NUM  Y3
« '(-B-((B^2-4*A*C)^(1/2)))/(2*A)' NUM  X4
« '(m*X4)+b1' NUM  Y4
« '(((X3-X2)^2+(Y3-Y2)^2)^(1/2))' NUM  D23
« '(((X4-X2)^2+(Y4-Y2)^2)^(1/2))' NUM  D24
« IF 'D23‰D24' THEN X3 Y3 D23  XI YI D2I
ELSE X4 Y4 D24  XI YI D2I END
END
« 'ATAN((XI-XC)/(YI-YC))'  •
« CASE 'XI-XC>0 AND YI-YC>0'
THEN • END
'XI-XC>0 AND YI-YC<0'
THEN '200+•' END
'XI-XC<0 AND YI-YC<0'
THEN '200+•' END
'XI-XC<0 AND YI-YC>0'
THEN '400+•' END
'YI-YC==0 AND XI>XC'
THEN 100 END
'YI==YC AND XI<XC'
THEN 300 END
'XI==XC AND YI<YC'
THEN 200 END
'XI==XC AND YI>YC'
THEN 0 END
END NUM  •CI
« IF '•CI+SIGN(R)*100Š400' THEN
'•CI+SIGN(R)*100-400' NUM  •I
ELSE '•CI+SIGN(R)*100' NUM  •I END
« '•1+SIGN(R)*100 +200' NUM  •C1
« IF '400-SIGN(R)*•C1+SIGN(R)*•CI Š400' THEN
'-SIGN(R)*•C1+SIGN(R)*•CI' NUM  Œ
ELSE '400-SIGN(R)*•C1+SIGN(R)*•CI' NUM  Œ END
« '(Œ*‡/200)*ABS(R)' NUM  L
« 'PK1+L' NUM  PK
« 'ATAN((X2-XI)/(Y2-YI))'  G
« CASE 'X2-XI>0 AND Y2-YI>0'
THEN G END
'X2-XI>0 AND Y2-YI<0'
THEN '200+G' END
'X2-XI<0 AND Y2-YI<0'
THEN '200+G' END
'X2-XI<0 AND Y2-YI>0'
THEN '400+G' END
'Y2-YI==0 AND X2>XI'
THEN 100 END
'Y2==YI AND X2<XI'
THEN 300 END
'X2-XI==0 AND Y2<YI'
THEN 200 END
'X2-XI==0 AND Y2>YI'
THEN 0 END
END NUM  •I2
« IF '•I2Š•I' THEN 1  S
ELSE -1  S END
« CLLCD
PK 3 RND "PK" TAG 1 DISP
'D2I*S' NUM 3 RND "D" TAG 2 DISP
XI NUM 3 RND "XI" TAG 3 DISP
YI NUM 3 RND "YI" TAG 4 DISP
•I NUM 3 RND "•I" TAG 5 DISP
0 WAIT DROP
» » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » »
NEXT »
»

Saludos.

0omme
0OMME
0OMME
Baby HP
Baby HP

Cantidad de envíos : 4
Calculadora : HP 48
ROM : HP 48-?

Volver arriba Ir abajo

No encuentro el error en este programa. Empty PROBLEMA SOLUCIONADO

Mensaje  0OMME Lun Nov 14, 2011 8:54 am

Gracias a todos, ya he encontrado el problema.
Si queréis podéis cerrar el tema.

saludos.

0omme
0OMME
0OMME
Baby HP
Baby HP

Cantidad de envíos : 4
Calculadora : HP 48
ROM : HP 48-?

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.