Autor
|
Tema: Necesito ayuda en pascal (Leído 4,322 veces)
|
W0lFy
|
Se desea realizar un programa que gestione los vehículos que pueden acceder a un parking privado. El parking es muy grande y carece de plazas señalizadas, por lo que es imposible conocer el número máximo de vehículos que pueden acceder. De cada vehículo se almacena la siguiente información: • Matrícula. (Formato 9999XXX, pe: 4321BXC) • Marca. • Modelo. • Color. (Curiosamente en este garaje solo entran coches rojos, blancos, negros, amarillos, azules y verdes). • Año matriculación. • DNI conductor habitual. (Hasta 8 números y un carácter alfabético) Todos estos datos se encuentran almacenados durante el día en memoria del ordenador, utilizando para ello estructuras de datos que carezcan de límite prefijado. Sin embargo al finalizar la jornada, el parking cierra y todos los datos de vehículos autorizados a acceder al parking y vehículos que se encuentran dentro del parking en el momento del cierre son guardados en ficheros, q posteriormente se cargarán al abrir el parking el día siguiente. El sistema se controla por medio de un menú que presenta las siguientes opciones: 1. Alta vehículo. Permite añadir los datos de un nuevo vehículo de manera que a partir de su alta ya puedan acceder al parking. Es preciso comprobar que la matrícula del vehículo no esté dada de alta previamente. No existe un número máximo de vehículos autorizados. 2. Baja vehículo. Permite dar de baja un vehículo de manera que ya no podrá acceder al aparcamiento. Para ello se solicita la matrícula del vehículo y en caso de existir se eliminan dichos datos. No se puede dar de baja un vehículo que se encuentra dentro del aparcamiento. 3. Listado vehículos autorizados. Nos muestra los datos de los vehículos autorizados ordenado por matrícula. 4. Listado vehículos aparcados. Nos muestra un listado con los datos de los vehículos que se encuentran dentro del parking ordenados por matrícula. 5. Acceso vehículo. El sistema nos preguntará la matrícula y comprobará si está autorizado a acceder. Si no se encuentra entre los vehículos autorizados, el vehículo no podrá acceder al parking, en caso contrario nos presentará por pantalla toda la información referente a ese vehículo de modo que el vigilante pueda comprobar que coinciden el resto de datos. Una vez presentada esta información, el sistema preguntará si se permite acceder a dicho vehículo al parking. Hay que tener en cuenta que también es necesario guardar registro de los datos de los vehículos que están dentro del parking. 6. Salida vehículo. Se solicitará la matrícula del vehículo. Se debe comprobar que dicho vehículo esté tanto en la lista de vehículos autorizados a entrar como en el registro de vehículos que están dentro del parking. Una vez que el vehículo abandona el aparcamiento deberá eliminarse su entrada de la lista de vehículos aparcados.
El caso es que no se me dan bien los punteros ni los archivos, alguien podria explicarme como hacerlo con punteros y ficheros??? no encuentro la soluciony siempre se me cuelga el turbo pascal,si pueden ayudarme no me vendria mal, porque ay algo que no entiendo de los punteros y me gustsaria saberlo. Un saludo Gracias
|
|
|
En línea
|
K@NuT0
|
|
|
Kpax
Desconectado
Mensajes: 316
|
Bueno de cajon te digo que estaras gestionando tus procesos de CargarArchivo(),GrabarArchivo(),EliminarArchivo(),InsertarDato(),EliminarDato(),EditarDato(),etc No le veo mucha complejidad a tu problema salvo la correcta gestion por puntero que hace mas eficiente la gestion de memoria de tu programa..
para Leer tienes varios porcedimientos tales com reset(),Rewrite(),write(),Assign(),close(),write(Archivo,dato) read(archivo,dato) saludos
|
|
|
En línea
|
En este mundo una de dos
|
|
|
W0lFy
|
muchas gracias kpax no me vendria mal que la gente me pusiese toda la informacion que tuviese, par aayudarme. Gracias saludos
|
|
|
En línea
|
K@NuT0
|
|
|
W0lFy
|
Buenas gente, no he conseguido nada todavia, me gustaria hacer el programa partiendo de lo mas sencillo a lo mas complicado, lo primero que estoy haciendo es que me pida el alta de un vehiculo, y lo almacene en un registro que apunte a otro registro, pero no me sale bien y no entiendo el porque, aqui os dejo el codigo que puse, aber si me podeis hechar una manilla que ando un poco jodio,Gracias:
PROGRAM practica21(input,output); CONST LONGMATRICULA=7; NUMCARMARCA=15; NUMCARMODELO=20; PRIMERANIO=1980; ULTIMOANIO=2007; LONGDNI=9; TYPE TMatricula=string[LONGMATRICULA]; TMarca=string[NUMCARMARCA]; TModelo=string[NUMCARMODELO]; TColor=(Rojo,Blanco,Negro,Amarillo,Azul,Verde); TAnio=PRIMERANIO..ULTIMOANIO; TDni=string[LONGDNI];
TVehiculo=RECORD matricula:TMatricula; marca:TMarca; modelo:TModelo; color:TColor; año:TAnio; dni:TDni; END;
TPtrNodo=^TNodo; TNodo=RECORD vehiculo:TVehiculo; sig:TPtrNodo; END;
TArchivoVehiculos=FILE OF TVehiculo;
VAR n:integer; car:TPtrNodo; PROCEDURE leerC(VAR coche:TVehiculo); VAR n:char; cont:integer; BEGIN cont:=0; REPEAT writeln('De que color es tu coche?'); writeln('(1):Rojo,(2):Blanco,(3):Negro,(4):Amarillo,(5):Azul,(6):Verde'); readln(n); WITH coche DO BEGIN CASE n OF '1':BEGIN color:=Rojo;cont:=0;END; '2':BEGIN color:=Blanco;cont:=0;END; '3':BEGIN color:=Negro;cont:=0;END; '4':BEGIN color:=Amarillo;cont:=0;END; '5':BEGIN color:=Azul;cont:=0;END; '6':BEGIN color:=Verde;cont:=0;END ELSE BEGIN writeln('No has introducido un numero valido');cont:=1;END; END; END; UNTIL cont=0; END; PROCEDURE leerV(VAR coche:TVehiculo); BEGIN WITH coche DO BEGIN writeln('Dame tu matricula'); readln(matricula); writeln('Dame tu marca'); readln(marca); writeln('Dame tu modelo'); readln(modelo); leerC(coche); writeln('Dame tu año'); readln(año); writeln('Dame tu dni'); readln(dni); writeln; END;{WITH} END;
PROCEDURE menu;
BEGIN writeln('1.-Alta vehiculo'); writeln('2.-Baja vehiculo'); writeln('3.-Listado vehiculos autorizados'); writeln('4.-Listado vehiculos aparcados'); writeln('5.-Acceso Vehiculo'); writeln('6.-Salida Vehiculo'); writeln('7.-Fin de dia'); writeln('8.-Carga inicio de dia'); writeln('9.-A¤adir Datos'); writeln; END; PROCEDURE altaC(VAR puntero:TPtrNodo); VAR aux:TPtrNodo; BEGIN new(aux);
WHILE puntero^.vehiculo.matricula<>'' DO puntero:=puntero^.sig; leerV(aux^.vehiculo); aux^.sig:=NIL; puntero^.sig:=aux; END; PROCEDURE escribirC(coche:TVehiculo); BEGIN WITH coche DO BEGIN writeln(matricula); writeln(marca); writeln(modelo); writeln(año); writeln(dni); writeln; END; END; PROCEDURE sacarP(puntero:TPtrNodo); VAR aux:TPtrNodo; BEGIN new(aux); aux^.sig:=puntero; WHILE aux<>NIL DO BEGIN escribirC(aux^.vehiculo); readln; aux:=aux^.sig;END; dispose(aux); readln END;
BEGIN car:=NIL; REPEAT new(car); menu; readln(n); CASE n OF 1:BEGIN altaC(car);END; 2:BEGIN sacarP(car);END; 3:BEGIN END; 4:BEGIN END; 5:BEGIN END; 6:BEGIN END; 7:BEGIN END; 8:BEGIN END; 9:BEGIN END;
END; UNTIL (n=10); END.
"
utilizo el segundo caso para mostrar mi puntero haber si lo he conseguido, necesito ayuda porque la aplicacion se vuelve loca y no me saca lo que yo quiero,un Saludo!
|
|
« Última modificación: 22 Mayo 2007, 23:32 pm por ¤¤¤K@NuTöM@N¤¤¤ »
|
En línea
|
K@NuT0
|
|
|
webarevalo
Desconectado
Mensajes: 2
|
Tengo la práctica hecha. Ponte en contacto conmigo en [No emails por seguridad, si quieres compartir la info ponla aquí]
|
|
« Última modificación: 25 Mayo 2011, 15:45 pm por skapunky »
|
En línea
|
|
|
|
Hustler001
Desconectado
Mensajes: 1
|
¿Alguien tiene la practica?
|
|
|
En línea
|
|
|
|
|
|