Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/12/2007, 07:48
aparejata
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: ¿Q es overflow en quick basic??????

Gracias por la ayuda pero todavia no tengo muy claro como arreglarlo.Este es el programa y el error me sale en la la fila en rojo


CLS
'
PRINT " *********** Programa Inercia-1 ***********"
'


10 DEFINT I-N

LOCATE 3, 1
INPUT "N£mero de vertices:"; n
DIM x(n), y(n)

'
PRINT " Tabla con los vertices iniciales:"
'

COLOR 4, 1
LOCATE 7, 1
PRINT "Vertice X Y "
COLOR 7, 0

FOR i = 1 TO n
PRINT USING "#### "; i;
INPUT ; ""; x(i)
fila = CSRLIN
columna = POS(0)
LOCATE fila, 1
PRINT " ";
LOCATE fila, 1
PRINT USING "#### ########.### "; i; x(i);
INPUT ; ""; y(i)
LOCATE fila, 1
PRINT " ";
LOCATE fila, 1
PRINT USING "#### ########.### ########.###"; i; x(i); y(i)

NEXT i


'*** Cambio de coordenadas de ejes generales a unos situados en el vertice 1

x1 = x(1): y1 = y(1) 'Necesito fijar x(1) e y(1) pues las tengo q restar
'al resto de las coordenadas de los vertices
FOR i = 1 TO n
x(i) = x(i) - x1
y(i) = y(i) - y1
NEXT i


' Operamos con los triangulos formados por el vertice 1 y 2 consecutivos
' recorriendo el pol¡gono en sentido horario (1,2,3) (1,3,4) etc

'*** Cada triangulo lo forman:

' a) el 1º vertice, el 1(0,0)
' b) el 2º vertice, el k
' c) el 3º vertice, el i

FOR k = 2 TO n - 1
i = k + 1


'*** Centro de gravedad del triangulo generico:

Xg = (x(k) + x(1)) / 3
Yg = (y(k) + x(1)) / 3

'*** Areas y lados del triangulo generico

Si = (x(k) * y(1) - x(i) * y(k)) / 2

d = SQR(x(k) ^ 2 + y(k) ^ 2): 'lado i-k
c = SQR(x(1) ^ 2 + y(1) ^ 2): 'lado i-1

'*** Inercias de los triangulos:

IF d <> 0 THEN

r3 = y(k) / d: 'Seno del angulo fi
r4 = x(k) / d: 'Coseno del angulo fi
h = 2 * Si / d: 'Altura del triangulo generico
z = x3 * r4 + y3 * r3: 'Proyeccion del lado c sobre d

'*** Valores auxiliares

IF h <> 0 THEN

v = (d - 2 * z) / (2 * h)
q = d * (h ^ 3) / 12
w = (h * (d ^ 3) / 48) + 3 * q * (v ^ 2)
p = q * v

r1 = q * (r4 ^ 2) + w * (r3 ^ 2) + 2 * p * r3 * r4
r2 = q * (r3 ^ 2) + w * (r4 ^ 2) - 2 * p * r3 * r4

'*** Inercias en los ejes locales y las acumulamos

Ix# = Ix# + r1 + Si * (Yg ^ 2) - Si * (Yg - z * r3) ^ 2
Iy# = Iy# + r2 + Si * (Xg ^ 2) - Si * (Xg - z * r4) ^ 2

'*** Sumatorios de (Xg*Si),(Yg*Si)

x = x + Xg * Si
y = y + Yg * Si

'*** Area total del pol¡gono

S = S + Si

END IF
END IF
NEXT k

'*** Centro de gravedad del pol¡gono completo

x = x / S
y = y / S

'*** Inercias referidas al centro de gravedad

Ix# = Ix# - (y ^ 2) * S
Iy# = Iy# - (x ^ 2) * S

'*** Paso de coordenadas de cdg a los ejes generales

Xg = x + x1
Yg = y + y1

'*** Salida de resultados

PRINT USING "Xg=####.### Yg=####.###"; Xg; Yg
PRINT USING "Area=#####.###"; S
PRINT USING "Ix=######.### Iy=######.###"; Ix#; Iy#