Necesito ayuda para un programa de pascal que tengo que entregar el día jueves 29/7/04 si puedes ayudarme te lo agradecería. Hacer un programa que muestre el detalle de los empleados dando subtotal por sucursal, dentro de sucursal dar subtotal por departamento y dentro de departamento dar subtotal por almacen. Dar total de sueldos a calcular por la compañía. Debe estar ordenado en forma ascendente por sucursal departamento y almacen.
Tiene que tener una patalla de menu que diga: Cargar datos Listado Salir Son 3 estructuras de control
3 Respuestas
Respuesta
1
1
Anónimo
A ver, vamos por partes. El programa tiene varios errores de concepto. Creo que hay bastantes cosas que no tienes claras. Para poder ayudarte tendría que rehacer el programa por completo y no dispongo de tiempo para eso, así que trataré de orientarte un poco. La estructura do repeat until no existe en pascal. Lo que si existe es lo siguiente: Repeat Instrucción 1 Instrucción 2 ... Instrucción n until condicion. No he continuado examinando el programa porque como te decía no dispongo de mucho tiempo, pero podrías empezar por corregir eso.
Bueno acá te mando el código me da un error en la line 113 no se porque si puedes ayudarme te lo agradecería ya que es mi trabajo final para poder aprobar la materia y como me a costado Gracias. Program control_empleados; Uses Crt,Dos,Printer; Type Cadena=string; Empresa=Record Nombre:string[40]; Sucursal:Integer; Departamento:Integer; Almacen:Integer; Sueldo:Integer; DelimitadorReg:boolean; End; Fichero=File of Empresa; Var Archivo:Fichero; opcion:char; desactivarcontrol:boolean; (**************************************************************************) procedure pulsarunatecla; var car:char; begin gotoxy(25,23); write('Pulse una tecla cuando este listo...'); car:=UpCase(ReadKey); ClrScr; end; (*************************************************************) procedure activar(var f:Fichero); var resultado:integer; begin ClrScr; (*$i-*) Reset(f); Resultado:=ioresult; if resultado <> 0 then rewrite(f); close(f); end; (****************************************************************************) procedure leerRegistro(var e:empresa); var beta,alfa:integer; cad:string; begin with e do begin gotoxy(20,15);write('Nombre: '); Readln(nombre); gotoxy(20,16);write('Sucursal: '); Readln(sucursal); gotoxy(20,17);write('Departamento: '); Readln(departamento); gotoxy(20,18);write('Almacen: '); Readln(almacen); gotoxy(20,19);write('Sueldo: '); Readln(sueldo); Pulsarunatecla; end; (*********************************************************************) procedure listadototal(var f:Fichero); var e:empresa; sucaux,subtotalsuc,depaux,subtotaldep,subtotalalm,almaux,totalgeneral:integer; Begin reseat(f); eof="no" do repeat until eof="si" or sucursal<>sucaux depaux:=departamento subtotaldep=0 do repeat until eof=si or sucursal<>sucaux or depaux<>departamento subtotalalm=0 almaux=almacen do repeat until eof=si or sucursal<>sucaux or depaux<>departamento or almaux<>almacen write "Nombre Empleado" nombre; write "Sueldo" sueldo; subtotalalm:=subtotalalm+sueldo read(f) end; write "almacen" almaux; write "subtotal almacen" subtotalalm; subtotaldep:=subtotaldep+subtotalalm; end; write "departamento" depaux; write "subtotal departamento" subtotaldep; subtotalsuc:=subtotalsuc+subtotaldep; end; write "Sucursal" sucaux; write "subtotal sucursal" subtotalsuc; totalgeneral:=totalgeneral+subtotalsuc end; write "totalgeneral:" totalgeneral; end; close(f); End; (********************************************) procedure ampliar(var f:fichero); var r,e:empresa; i:integer; (*posicion del registro en el archivo*) opcion:char; begin clrscr; gotoxy(25,2); write('ESTAS EN LA OPCION DE "ALTAS"'); reset(f); gotoxy(25,4); write('Pulse cualquier tecla excepto - n ¢ N -'); while Upcase(ReadKey) <> 'N' do begin gotoxy(20,13); write('Introduzca Datos del Nuevo Usuario: '); LeerRegistro(e); i:=posicion(e.nombre,f); if i=-1 then begin i:=filesize(f); seek(f,i); write(f,e); end else begin seek(f,i); read(f,r); if r.DelimitadorReg then begin gotoxy(20,21); write('El Elemento ya Existe'); sound(450); delay(500); nosound; end else write(f,e); end; gotoxy(20,21); write('Pulse - n ¢ N - si quiere Salir de Altas'); end; close(f); End; (********************************************) procedure menu(var f:fichero); var opcion:char; begin repeat clrscr; gotoxy(23,2);write('Menu Principal'); gotoxy(20,4);write('1.- Altas.'); gotoxy(20,6);write('2.- Listado total.'); gotoxy(20,8);write('3.- Salir'); repeat opcion:=UpCase(ReadKey); until opcion In ['1'..'3',#27]; clrscr; Case opcion of '1': Ampliar(f); '2': ListadoTotal(f); End; (*End del Case*); Until (opcion='3') or (opcion=#27); close(f); textcolor(white); textbackground(black); Normvideo; end; (****************************************************************************) (* Programa Principal *) (****************************************************************************) Begin Clrscr; textcolor(white); textbackground(black); desactivarcontrol:=false; checkbreak:=desactivarcontrol; setcbreak(desactivarcontrol); Assign(archivo,'agenda.dat'); Activar(archivo); Menu(archivo); textcolor(white); textbackground(black); Normvideo; clrscr; End.
Ok gracias ya me pongo a trabajar en ello
Con gusto te ayudaré, pero no resuelvo ejercicios completos, sólo dudas concretas, así que deberás enviarme lo que ya hayas avanzado en el código para corregirlo y aumentarlo si es necesario. Si estás aprendiendo y yo te resuelvo el ejercicio no conseguirás aprender nada, así que será mejor que primero lo intentes por tu cuenta.
Bueno gracias por tu respuesta te cuento ya tengo creada la estructura del programa los menús y el registro pero no se como es el procedimiento para ordenarlo de sucursal a departamento almecen en forma ascendente y me de el total
Ok, edita el código que ya tengas echo con un editor como el bloc de notas, por ejemplo, cópialo y pégalo aquí para que yo pueda cogerlo y probarlo. Una vez que lo tenga trataré de resolver lo que te falte.
- Anónimoahora mismo
Respuesta de gagbest
1
1
gagbest, Ing. de Computación. Especialista en Turbo Pascal y Visual Fox...
Pero de verdad estoy sumergido en mi trabajo ahora y me es imposible ayudarte, tal vez si hubiese sido con más anticipación lo hubiese hecho. Atentamente. Ing. Gustavo Gonzalez. Linux User: 342.219. Maracaibo - Venezuela
Por cuestión de tiempo no he podido responderte, ya que en la red de por acá, se introdujo un Virusin, estuvo difícil erradicarlo, anduve como pirinola. Mil millones de disculpas per sigo a tus ordenes Atentamente. Linkus