Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 1 votos - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
ayudenme con tp algoritmos
Autor Mensaje
nixeccorp Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 5
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Nov 2010
Mensaje: #1
Wink ayudenme con tp algoritmos Trabajo practico Algoritmos y Estructuras de Datos
hola como les va?...mi problema es que al ejecutar un programa en turbo pascal 7.0 borland en el cual uso nodos, listas, punteros, me salta error "203 heap overflow error"
se que es por falta de memoria, pero no se como agrandarla, a menos que mi programa este mal, se los dejo para que lo vean y me digan.

uses
crt,graph;
const
CANT_STAR = 25;
type
str12 = string[12];
str20 = string[20];
str30 = string[30];
tregStar = RECORD
nomStar : str20;
coordX,
coordY : word;
nroOrden : byte
end;
tvStar = ARRAY [1..CANT_STAR] of tregStar;
tregCnstStar = RECORD
nomCnstlcn : str30;
cjtoStar : tvStar;
end;
tarcCnstStar = file of tregCnstStar;
tregSeg = RECORD
ptoOrigen,
ptoDestino : byte
end;
tvSeg = ARRAY [1..CANT_STAR] of tregSeg;
tregCnstSeg = RECORD
nomCnstSeg : str30;
cjtoSeg : tvSeg;
end;
tarcCnstSeg = file of tregCnstSeg;
tinfoSt = tregStar;
tlistaSt = ^tnodoSt;
tnodoSt = RECORD
info : tinfoSt;
sgte : tlistaSt
end;
tinfoSg = tregSeg;
tlistaSg = ^tnodoSg;
tnodoSg = RECORD
info : tinfoSg;
sgte : tlistaSg
end;
rVecCns = RECORD
nomCnstlcn : str30;
lstSt : tlistaSt;
lstSg : tlistaSg
end;
tVecCns = ARRAY [1..15] of rVecCns;

PROCEDURE insnodoSt( var lista:tlistaSt; valor:tregStar);
var
p : tlistaSt;
begin
new(p);
p^.info := valor;
p^.sgte := lista;
lista := p;
end;

PROCEDURE insnodoSg(var lista:tlistaSg; valor:tregSeg);
var
p : tlistaSg;
begin
new(p);
p^.info := valor;
p^.sgte := lista;
lista := p
end;

PROCEDURE armar_lstSg(var vec:tVecCns; n:byte; reg2: tregCnstSeg);
var
x:byte;
begin
vec[n].lstSg:=nil;
x := 1;
while reg2.cjtoSeg[x].ptoOrigen <> 0 do
begin
insnodoSg(vec[n].lstSg,reg2.cjtoSeg[x]);
inc(x)
end;
end;
PROCEDURE armar_lstSt(var vec:tVecCns; n:byte; reg: tregCnstStar);
var
x:byte;
begin
vec[n].lstSt:=nil;
x := 1;
while reg.cjtoStar[x].nomStar <> ' *' do
begin
insnodoSt(vec[n].lstSt,reg.cjtoStar[x]);
inc(x)
end;
end;

PROCEDURE armarVector(var vec:tVecCns; var n:byte;nombre:str30;nombre2:str30);
var
cons : tarcCnstStar;
reg : tregCnstStar;
cons2: tarcCnstSeg;
reg2 : tregCnstSeg;
begin
assign(cons,nombre+'.dat');
reset(cons);
assign(cons2,nombre2+'.dat');
reset(cons2);
n := 0;
while not(eof(cons)) do
begin
read(cons,reg);
read(cons2,reg2);
inc(n);
vec[n].nomCnstlcn := reg.nomCnstlcn;
armar_lstSt(vec,n,reg);
armar_lstsg(vec,n,reg2);
end;
close(cons);
close(cons2);
end;

PROCEDURE ordenar(var vec:tVecCns; n:byte);
var
aux: rvecCns;
i,
j: byte;
begin
for i:=1 to (n-1) do
begin
for j:=(i+1) to n do
begin
if vec[i].nomCnstlcn > vec[j].nomCnstlcn then
begin
aux := vec[i];
vec[i] := vec[j];
vec[j] := aux;
end
end
end
end;

FUNCTION Menu( vec:tVecCns; n:byte):byte;
var
i,
j,
opc : byte;

begin
clrscr;
i := 5;
gotoxy(16,i);
writeln('Elija una constelacion a graficar:');
for j := 1 to n do
begin
gotoxy(16,i+j);
writeln(j,'.-',vec[j].nomCnstlcn);
end;
readln(opc);
menu := opc
end;

PROCEDURE buscarenlista(list:tlistaSt;
valor:byte;
var p:tlistaSt);
var
q : tlistaSt;
begin
q := list;
p := NIL;
while ((q<>NIL)and(p=NIL)) do
begin
if valor <> q^.info.nroOrden then
q := q^.sgte
else
p := q
end
end;
PROCEDURE graficar(vec:tVecCns; opc:byte);
var
q: tlistaSg;
p: tlistaSt;
x1,y1,
x2,y2,
i:word;
nOrd,
ori,
des: string; {----------------------------------}
begin
setgraphmode(getgraphmode);
q := vec[opc].lstSg;
while q <> NIL do
begin
buscarenlista(vec[opc].lstSt,
q^.info.ptoOrigen,
p);
x1 := p^.Info.coordX;
y1 := p^.Info.coordY;
buscarenlista(vec[opc].lstSt,
q^.info.ptoDestino,
p);
x2 := p^.Info.coordX;
y2 := p^.Info.coordY;
str(q^.info.ptoOrigen,ori);
str(q^.info.ptodestino,des);
q := q^.sgte
end;
p := vec[opc].lstSt;
i := 0;
while p <> NIL do
begin
str(p^.info.nroOrden,nOrd);
i := i + 20;
p := p^.sgte
end
end;
PROCEDURE ProcCnstlcns;
var
vecCns : tvecCns;
nombre : str30;
nombre2: str30;
n,
opc : byte;
begin
clrscr;
gotoxy(16,8);
writeln('ingrese el nombre del archivo binario de estrellas');
gotoxy(16,9);
readln(nombre);
gotoxy(16,10);
writeln('ingrese el nombre del archivo binario de segmentos');
readln(nombre2);
gotoxy(16,11);
armarVector(vecCns,n,nombre,nombre2);
ordenar(vecCns,n);

opc := menu(vecCns,n);

graficar(vecCns,opc);
{readln();}
readkey;
end;
begin
ProcCnstlcns;
end.

Ha, si alguien sabe como hacer funcionar bien los graficos...lo voy a preguntar en otro tema. grax.
14-12-2010 20:00
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
By demons driven!
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.333
Agradecimientos dados: 51
Agradecimientos: 67 en 37 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #2
RE: ayudenme con tp algoritmos
Es mucho código para leer.¿Podés darnos una idea general de lo que se supone que hace el programa?

Cita:Absolve me, save my reign
Have you forgotten me?
15-12-2010 03:11
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.356
Agradecimientos dados: 900
Agradecimientos: 889 en 356 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #3
RE: ayudenme con tp algoritmos
Es apenas lo ejecutas ?
yo use el dev-pascal, que viene con nose.que compilador (creo que el free pascal)

y lo ejecuta, y sale

Cita:ingrese el nombre del archivo binario de estrellas
15
ingrese el nombre del archivo binario de segmentos
12

Runtime error 2 at 0x00401318
0x00401318
0x0040189B
0x004018FC
0x00409D69

el error 2 es "file not found"
y eso es porque usas assign y reset, y no tengo los archivos =P
vos tenes los archivos ? capaz por eso..
desp al menos hasta ahi llega.

[Imagen: v34BEFt.gif]
(Este mensaje fue modificado por última vez en: 15-12-2010 03:45 por gonnza.)
15-12-2010 03:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nixeccorp Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 5
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Nov 2010
Mensaje: #4
Tongue RE: ayudenme con tp algoritmos
si tengo los archivos binarios, el problema viene cundo trata de hacer el vector de listas, tal parece que no me da el tamaño del heap, para crear la listas(maximo 15 listas), como sabran estas lista se hacen en el heap.
Quiero saber como agrandar el tamaño del heap en turbo pascal 7.0 borland, para el que conoce, ya pase el dentination de memory a disk, pero nada todavia. Les dejo los archivos binarios(no me deja subirlos).
el error que me salta es 203 heap overflow error.

AYUDA¡¡¡¡
(Este mensaje fue modificado por última vez en: 15-12-2010 10:55 por nixeccorp.)
15-12-2010 10:53
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.356
Agradecimientos dados: 900
Agradecimientos: 889 en 356 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #5
RE: ayudenme con tp algoritmos
GOOGLE



Cita:Si se obtienen errores de Desbordamiento del Heap mientras se ejecuta el programa desde dentro del IDE, puede probar saliendo de Turbo Pascal y ejecutar el programa desde la línea de comandos del DOS.

Véase el error de run-time número 1: Out of Memory para sugerencias sobre como recuperar memoria.


--------------------------------------------------------------------------------

ah, de paso, cuando compile en el dev (esta bueno como IDE) me tiro como 10 variables que las declarabas y no las usabas nunca; te conviene sacarlas porque ahi estas comiento memoria al pedo de paso..
Desp miro mas por arriba, estoy desde el laburo =P


sobre como recuperar memoria (que dice mas arriba ver "..")

Cita:Descripción:

Este error ocurre cuando el compilador se queda sin memoria.

Probar estas soluciones, en este orden:

1.Arregle el problema fuera del IDE:
◦Eliminar TSRs de memoria.
◦Modificar CONFIG.SYS para eliminar controladores innecesarios; también reducir ficheros y buffers (SET FILES = 20, SET BUFFERS = 20).
2.Reconfigurar Turbo Pascal:
◦Establecer Compile -> Destination a Disk.
◦Establecer Options -> Linker -> Link buffer a Disk.
◦Conmutar Graphics Screen Save OFF.
3.Modificar el código fuente:
◦Poner units en overlay en el programa
◦En Options -> Memory Sizes, reducir Stack Size y Low Heap Limit.
◦En Options -> Compiler...:
*Conmutar Range Checking y Stack Checking OFF.
*Conmutar Emulation OFF mientras se depura.
4.Intente usar el IDE para editar el programa, y luego usar el compilador en línea de comandos (TPC.EXE o TPCX.EXE) para compilarlo y el Turbo Debugger para depurarlo.

[Imagen: v34BEFt.gif]
15-12-2010 19:43
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nixeccorp Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 5
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Nov 2010
Mensaje: #6
Tongue RE: ayudenme con tp algoritmos
pero por lo que entendi de cuello en el heap se crean las variables dinamicas, he hice los calculos y la cantidad de memoria que nececito es 15000 bytes, es un poco menos que esto,y el heap lo tengo en maxima capacidad, segun turbo pascal de borland en 655345 bytes, me tendria que sobrar espacio, pero no. paso mail s c o t t 2 6 8 9 1 @ h o t m a i l . c o m (va todo junto por si no me dejan publicarlo).
16-12-2010 01:43
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
By demons driven!
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.333
Agradecimientos dados: 51
Agradecimientos: 67 en 37 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #7
RE: ayudenme con tp algoritmos
Esto puede ser una pregunta extraña pero...cuanta RAM tenés?

Cita:Absolve me, save my reign
Have you forgotten me?
22-12-2010 16:57
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nixeccorp Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 5
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Nov 2010
Mensaje: #8
RE: ayudenme con tp algoritmos
2 gb 2gb 2 gb
22-12-2010 17:43
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
By demons driven!
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.333
Agradecimientos dados: 51
Agradecimientos: 67 en 37 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #9
RE: ayudenme con tp algoritmos
6gb? ¿O solo estabas reiterando? =P.
Que raro,se me había ocurrido que se te lleno la RAM.Creo que me paso cuando probe un procedimiento recursivo de pablo <apellidoraro> que me termino cancelando el programa para la mierda.

Anyway proba usando linea de comandos con el .exe.Es decir ejecutar-->CMD y de ahi te posicionas en la carpeta donde esta el programa y de ahi le mandas el nombre del programa y enter y fijate.

Igual hace lo que posteo gonnza primero y despues postea los errores que te tira.También fijate si no tenés la RAM ocupada en otra cosa.No se mucho del tema,pero puede que haya otros programas comiendo RAM a lo loco y por eso te quedan menos de 15000 bytes (de otro modo,para tu capacidad de RAM debería ser un chiste 15MB).

Cita:Absolve me, save my reign
Have you forgotten me?
(Este mensaje fue modificado por última vez en: 22-12-2010 22:39 por rulo.)
22-12-2010 22:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.356
Agradecimientos dados: 900
Agradecimientos: 889 en 356 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #10
RE: ayudenme con tp algoritmos
Cita:Anyway proba usando linea de comandos con el .exe.Es decir ejecutar-->CMD y de ahi te posicionas en la carpeta donde esta el programa y de ahi le mandas el nombre del programa y enter y fijate.

eso lo hice yo, y me pasaba lo que le dije ahi (que no tenia los archivos)


igual me paarece raaaaaaaaaarisimo que le coma toda la RAM, por no decir imposible (salvo que entre en un bucle infinito por algo mal escrito)
Por eso estaria bueno q tires los archivos asi lo pruebo en mi casa, asi veo si solo es tu maquina ! y de paso vemos una solucion

[Imagen: v34BEFt.gif]
23-12-2010 00:27
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
By demons driven!
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.333
Agradecimientos dados: 51
Agradecimientos: 67 en 37 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #11
RE: ayudenme con tp algoritmos
No,hablaba de un proceso loco/virus no del programa en sí.
Eso! Tira los archivos che!

Cita:Absolve me, save my reign
Have you forgotten me?
23-12-2010 18:04
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: