Necesito hacer un proyecto en pascal!

Hola quisiera saber si me pueden ayudar a realizar un proyecto en pascal, debo hacer un archivo que contenga un registro, por favor si me pueden echar una mano se lo agradecería mucho... Respondan lo antes posible... GRACIAS!
1

1 respuesta

1
Respuesta de Anónimo
Podría ayudarte, pero tendrías que ser más explícito: ¿Cuántos campos tiene que tener ese registro?
¿Cuáles son esos campos?
Ok mira aquí te va el enunciado completo del programa que debo hacer:
Realice un programa que permita crear un archivo a través del cual se llevará el registro de empleados de una compañía. Cada registro estará compuesto por los sig campos: nombre, apellido, cedula y departamento al que pertenece (a, b, c, d) el archivo será manejado a través del sig menú: 1.- agregar registros, 2.- consultar registros, 3.- eliminar registros y 4.- finalizar. La consulta será general y en ella se deben calcular y mostrar cuantos empleados hay en cada departamento.
Ya con esto creo que tienes la información necesaria... infórmame si puedes o no ayudarme por favor!
Lo siento, pero no resuelvo ejercicios completos, sólo dudas concretas. Si ya has avanzado algo en el código me lo envías y yo gustosamente lo corrijo y aumento si es necesario.
P.D: Si estás aprendiendo no es bueno que nadie resuelva los ejercicios por ti, porque entonces no aprenderías nada.
Un saludo.
Oye tienes toda la razón, ademas tengo algo del programa terminado y quisiera que pudiera servir, pero no se como enviártelo por aquí,¿podrías enviarme tu correo?, no lo se quizá en hotmail (es allí donde tengo el mio) o dime tu ¿cómo podría enviarte mi adelanto por aquí?
Vamos por partes:
1. Para mandar por aquí algo (sólo fichero de texto) tendrías que abrirlo con un editor de texto (Notepad, bloc de notas, wordpad...) seleccionarlo todo, luego le das a copiar, y después, en esta ventana le das a pegar y ya está.
De todas formas te voy a mandar lo que he hecho yo. Sólo te queda por programar el menú.
Uses CRT;
Type
TRegistro=Record
NOMBRE : String;
APELLIDO : String;
CEDULA : String;
DPTO : Char;
End;
TFichero = File of TRegistro;
Var
REGISTRO : TRegistro;
FICHERO : TFichero;
Procedure Altas(var F : TFichero; R : TRegistro);
Begin
ClrScr;
GotoXY(10,10); WriteLn('Nombre: ');
GotoXY(10,12); WriteLn('Apellido: ');
GotoXY(10,14); WriteLn('C,dula: ');
GotoXY(10,16); Writeln('Departamento: ');
GotoXY(19,10); ReadLn(R.Nombre);
GotoXY(22,10); ReadLn(R.Apellido);
Repeat
GotoXY(19,10); ClrEol; ReadLn(R.DPTO);
Until R.DPTO in ['a'..'d','A'..'D'];
Write(F,R);
End;
Procedure Consultas(var F : TFichero);
Var
ENCONTRADO: Boolean;
AUX : String;
R : TRegistro;
NumA,NumB,NumC,NumD : Integer;
Begin
ClrScr;
While not eof(f) do
Begin
Read(F,R);
Case R.DPTO of
'a','A' : Inc(NUMA);
'b','B' : Inc(NUMB);
'c','C' : Inc(NUMC);
'd','D' : Inc(NUMD);
eND;
End;
GotoXY(10,10); Writeln('Trabajadores en el departamento A: ',NUMA);
GotoXY(10,12); Writeln('Trabajadores en el departamento B: ',NUMB);
GotoXY(10,14); Writeln('Trabajadores en el departamento C: ',NUMC);
GotoXY(10,16); Writeln('Trabajadores en el departamento D: ',NUMD);
End;
Procedure Bajas(var F : TFichero);
var
FAUX : TFichero;
AUX : String;
R : TRegistro;
Begin
Assign(FAUX,'AUX.DAT');
ReWrite(FAUX);
WriteLn('Introduzca la c,dula: ');
Readln(AUX);
While not eof(F) do
Begin
Read(F,R);
IF R.CEDULA <> AUX then
Write(FAUX,R);
End;
erase(F);
rename(FAUX,'AGENDA.DAT');
end;
Begin
Assign(FICHERO, 'Agenda.dat');
{$I-}
Reset(FICHERO);
{$I+}
if IOResult = 0 then
WRITELN('EXISTE');
(*llamar al menú; *)
(*operar con el fichero y cerrar; *)
CLOSE(FICHERO);
else
Writeln('Fichero no hallado');
end.
Espero te sea de utilidad.
Un saludo.
program proyecto;
uses crt;
type empleados= record
nom,ape:string[20];
ced:string[8];
dep:char;
end;
proyecto= file of empleados;
var R:array[1..100] of empleados;
archivo:proyecto;
begin
assign (archivo,('Arch.dat');
rewrite(archivo);
clrscr;
write('Ingrese la cantidad de empleados: ');
readln(ce);
for i:=1 to ce do
begin
writeln('1.- Agregar Registros.');
writeln('2.- Consultar Registros.');
writeln('3.- Eliminar Registros.');
writeln('4.- Finalizar.');
write('Ingrese la opci¢n que desea utilizar: ');
readln(op);
case (op) of
1: begin
clrscr;
write('Ingrese su nombre: ');
readln(R.nom);
write('Ingrese su apellido: ');
readln(R.ape);
write('Ingrese su c?dula: ');
readln(R.ced);
write('Ingrese el departamento para el cual trabaja: ');
readln(R.dep);
if (R.dep='a') or (R.dep='A') then
depa:=depa+1;
if (R.dep='b') or (R.dep='B') then
depb:=depb+1;
if (R.dep='c') or (R.dep='C') then
depc:=depc+1;
can:=can+1;
end;
2: begin
clrscr;
writeln('Nombre Apellido C?dula Dep. Trabaja');
writeln('-----------------------------------------');
for i:= to ce do
write(R.nom,' ',R.ape,' ',R.ced,' ',R.dep,' ');
writeln('La cantidad de empleados es de: ',can);
end;
3: begin
clrscr;
seek(archivo, filesize(archivo));
write(archivo);
close(archivo)
end.
Esto era lo que llevaba pero no estoy segura de lo que hacia pues las sentencias de archivos no las se manejar, echale un vistazo a ver si por lo menos iba bien! En cuanto a lo que me enviaste... lo estoy pasando al programa de pascal para correrlo y hacer el menú, ya luego te pediré que me aclares mis dudas si no las logro aclarar yo, espero no sea mucha molestia!
He estado viendo el código, y de momento no ibas mal, aunque me parece un poco "confuso".
Espero que te sirva lo que te envié.
Con lo que te he mandado ya tienes todas las opciones, sólo tendrías que programar el menú. Si quieres, me lo puedes enviar una vez lo hayas hecho.
Un saludo.
Bueno si tanto la codificación que hice como yo estábamos un poco confusos :s je je bueno cuando termine te lo envío, gracias por adelantado, espera mi próximo mensaje!
Bien, aquí esta toda la codificación incluyendo el menu, pero al ejecutarlo me sale un mensaje que dice 'DIVISIÓN BY ZERO' y no se ejecuta el programa, ¿sabrías decirme a que se debe esto?
program proyecto;
uses crt;
type tregistro=record
nombre,apellido:string[20];
cedula:string[8];
dpto:char;
end;
tfichero=file of tregistro;
var registro:tregistro;
fichero:tfichero;
op:byte;
procedure altas;
var f:tfichero; r:tregistro;
begin
clrscr;
gotoxy(10,10); writeln('nombre: ');
gotoxy(10,12); writeln('Apellido: ');
gotoxy(10,14); writeln('C?dula: ');
gotoxy(10,16); writeln('Departamento: ');
gotoxy(19,10); readln(R.nombre);
gotoxy(22,10); readln(R.Apellido);
repeat
gotoxy(19,10); clreol; readln(R.dpto);
until R.dpto in ['a'..'d','A'..'D'];
write(F,R);
end;
procedure consultas;
var f:tfichero;
encontrado:boolean;
aux:string;
r:tregistro;
numA,numB,numC,numD: Integer;
begin
clrscr;
while not eof(f) do
begin
read(F,R);
case R.dpto of
'a','A': Inc(numA);
'b','B': Inc(numb);
'c','C': Inc(numc);
'd','D': Inc(numd);
end;
end;
gotoxy(10,10); writeln('Trabajadores en el departamento A: ',numA);
gotoxy(10,12); writeln('Trabajadores en el departamento B: ',numB);
gotoxy(10,14); writeln('Trabajadores en el departamento C: ',numC);
gotoxy(10,16); writeln('Trabajadores en el departamento D: ',numD);
end;
Procedure Bajas;
var f: tfichero;
faux:tfichero;
aux:string;
r:tregistro;
begin
assign(faux,'AUX.DAT');
rewrite(faux);
write('Introduzca la c?dula: ');
readln(aux);
while not eof(f) do
begin
read(F,R);
if R.cedula <> aux then
write(faux,r);
end;
erase(f);
rename(FAUX,'Agenda.dat');
end;
procedure salir;
begin
writeln('Presione cualquier tecla para salir');
readkey;
end;
begin
assign(fichero,'Agenda.dat');
{$I-}
reset(fichero);
{$I+}
if ioresult=0 then
writeln('Existe');
writeln('1.- Agregar Registros');
writeln('2.- Consultar Registros');
writeln('3.- Eliminar Registros');
writeln('4.- Finalizar');
write('Ingrese el n£mero de la opci¢n a utilizar: ');
readln(op);
case (op) of
1: begin
clrscr;
altas;
end;
2: begin
clrscr;
consultas;
end;
3: begin
clrscr;
bajas;
end;
4:
close(fichero)
else
writeln('Fichero no hallado');
readkey;
end;
end.
Uses CRT;
Type
TRegistro=Record
NOMBRE : String;
APELLIDO : String;
CEDULA : String;
DPTO : Char;
End;
TFichero = File of TRegistro;
Var
REGISTRO : TRegistro;
FICHERO : TFichero;
OPCION : Integer;
Procedure Altas(var F : TFichero);
var
R : TRegistro;
Begin
ClrScr;
GotoXY(10,10); WriteLn('Nombre: ');
GotoXY(10,12); WriteLn('Apellido: ');
GotoXY(10,14); WriteLn('C,dula: ');
GotoXY(10,16); Writeln('Departamento: ');
GotoXY(19,10); ReadLn(R.Nombre);
GotoXY(22,10); ReadLn(R.Apellido);
Repeat
GotoXY(19,10); ClrEol; ReadLn(R.DPTO);
Until R.DPTO in ['a'..'d','A'..'D'];
Write(F,R);
End;
Procedure Consultas(var F : TFichero);
Var
ENCONTRADO: Boolean;
AUX : String;
R : TRegistro;
NumA,NumB,NumC,NumD : Integer;
Begin
ClrScr;
While not eof(f) do
Begin
Read(F,R);
Case R.DPTO of
'a','A' : Inc(NUMA);
'b','B' : Inc(NUMB);
'c','C' : Inc(NUMC);
'd','D' : Inc(NUMD);
eND;
End;
GotoXY(10,10); Writeln('Trabajadores en el departamento A: ',NUMA);
GotoXY(10,12); Writeln('Trabajadores en el departamento B: ',NUMB);
GotoXY(10,14); Writeln('Trabajadores en el departamento C: ',NUMC);
GotoXY(10,16); Writeln('Trabajadores en el departamento D: ',NUMD);
End;
Procedure Bajas(var F : TFichero);
var
FAUX : TFichero;
AUX : String;
R : TRegistro;
Begin
Assign(FAUX,'AUX.DAT');
ReWrite(FAUX);
WriteLn('Introduzca la c,dula: ');
Readln(AUX);
While not eof(F) do
Begin
Read(F,R);
IF R.CEDULA <> AUX then
Write(FAUX,R);
End;
erase(F);
rename(FAUX,'AGENDA.DAT');
end;
PROCEDURE MENU (VAR OPCION:INTEGER);
BEGIN
CLRSCR;
REPEAT
GOTOXY (23,9); WRITE ( '1. Altas');
GOTOXY (23,11); WRITE ('2. Bajas');
GOTOXY (23,13); WRITE ('3. Consultas');
GOTOXY (23,15); WRITE ('4. Salir');
GOTOXY (23,19); WRITE ('INTRODUZCA OPCION:');
GOTOXY (42,19); READLN (OPCION);
UNTIL (OPCION>0) OR (OPCION<6)
END;
Begin
Assign(FICHERO, 'Agenda.dat');
{$I-}
Reset(FICHERO);
{$I+}
if IOResult = 0 then
Begin
REPEAT
MENU (OPCION);
CASE OPCION OF
1: ALTAS(FICHERO);
2: BAJAS (FICHERO);
3: CONSULTAS(FICHERO);
END;
UNTIL OPCION=4;
CLOSE(FICHERO)
end
else
Writeln('Fichero no hallado');
End.
Bien, este es todo el código incluyendo el menú. Esto debería funcionar correctamente.
Si tienes algún problema, dame tu mail para poder mandarte algún archivo que fuera necesario y alguna otra explicación.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Pascal o hacer tu propia pregunta: