Foros del Web » Programación para mayores de 30 ;) » Programación General »

¿Q es overflow en quick basic??????

Estas en el tema de ¿Q es overflow en quick basic?????? en el foro de Programación General en Foros del Web. Hola wenas, no estoy estudiando programacion ni nada parecido pero tenia q hac er un programa en quick basic para trabajar con áreas de figuras ...
  #1 (permalink)  
Antiguo 06/12/2007, 14:30
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 17 años, 3 meses
Puntos: 0
¿Q es overflow en quick basic??????

Hola wenas, no estoy estudiando programacion ni nada parecido pero tenia q hac er un programa en quick basic para trabajar con áreas de figuras y al ejecutarse sale un error y pone overflow. Si alguien me pudiera decir lo q es y como arreglarlo se lo agradeceria.

P.D. Ya he leido la ayuda pero me e quedado igual
  #2 (permalink)  
Antiguo 06/12/2007, 14:45
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: ¿Q es overflow en quick basic??????

Un error de overflow o desbordamiento ocurre cuando tratas de copiar cierta cantidad de información en un área de memoria que no es lo suficientemente grande como para contenerla, pero si no muestras la linea en la que te dio el error o algo que nos permita ayudarte no puedo agregar más.

Código:
dim a as integer, b as integer
' Desborda a
a = 100000
' Esto tambien
a = 2000 + 70000
b = 1233

' y esto tambien
a = 10000*b
Espero que ese simple ejemplo te ilustre...por cierto, no lo probe no tengo QBasic.jejeje

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 07/12/2007, 12:20
Avatar de jm00092  
Fecha de Ingreso: mayo-2005
Ubicación: Ronda
Mensajes: 106
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: ¿Q es overflow en quick basic??????

En la versión de QBasic en español puede aparecer un error que pone "Desbordamiento de pila", no sé si en inglés lo traducen también como algo de Overflow

En este caso no tiene nada que ver con el tamaño de los datos almacenados en las variables, sino con procedimientos y funciones recursivas. Esto es que se llaman a sí mismos y llegan a producir algo parecido a un bucle infinito y se llena el area de memoria destinada a los puntos de retorno de las llamadas a los procedimientos.
Tendrás que revisar cuidadosamente la estructura de procedimientos de tu programa, ver quien llama a quien, que se va saliendo de los procedimientos por el final sin llamar a quien lo llamó ni nada raro..y en general hacer que sea lo más sencilla posible.
  #4 (permalink)  
Antiguo 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#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:32.