
08/12/2007, 07:48
|
| | 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# |