Pascal/Turbo Pascal - Planilla academica

 
Vista:

Planilla academica

Publicado por Jayson (2 intervenciones) el 14/06/2011 17:01:25
Hola mi estimados
Tengo un pequeño problemita con pascal y es el siguiente:
Tengo que entregar una estructura de arreglos de registros para esta semana pero no se como empezar, con los puntos que se me han pedido, asi que necesito su ayuda. Los puntos a retomar estan en la parte de abajo.
7. Se tiene la siguiente declaración:
const
n = 10;
type
str = string[15];
horario = record
num_carnet : str;
salario : real
end;
arreglo_hor = array [1..n] of horario;
antigueda = record
anio : byte;
porc : real
end;
arreglo_ant = array [1..5] of antigueda;
nombre = record
nom1 : str;
ape1 : str;
end;
reg_grupo = record
nom_asig : str;
num_est : byte;
horas : byte
end;
empleado = record
num_car : str;
nom_emp : nombre;
anio_ant : byte;
num_grupo : byte;
grupo : array [1..n] of reg_grupo
end;
arreglo_reg = array [1..n] of empleado;
var
re : arreglo_reg;
ta : arreglo_ant
sh : arreglo_hor

NOTA: El campo num_grupo: es el numero de grupo de clase que tiene cada profesor horario y de el depende el llenado de reg_grupo.

El arreglo_ant será llenado o asignado con los siguientes valores:
1 año 3%
2 año 5%
3 año 7%
4 año 9%
5 año 11%

Realice un programa, que llene el arreglo_reg y el arreglo_ant. Luego llene el arreglo_hor con:
El salario de un profesor horario sale de la suma de horas impartidas por 40 córdoba por hora mas el porcentaje multiplicado por su salario por hora impartida (para esto debe hacer una búsqueda secuencial en el arreglo_ant para saber cual es el porcentaje que le toca a cada profesor horario).

Esto se almacenara en el arreglo_hor y con su respectivo numero de carnet.

Luego imprima a la pantalla la siguiente salida
Nomina quincenal profesores horarios

Numero de carnet Salario
xxxxxxxxxxxxxxx 9999999

También se desea saber cuanto gasto la universidad en salario de los profesores horarios. Imprima el nombre de cada profesor con los nombres de todas sus asignaturas. Cuantos e estudiantes tiene un profesor determinado (use búsqueda secuencial).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Planilla academica

Publicado por ramon (2158 intervenciones) el 14/06/2011 23:48:26
{Espero que esto te ayude a seguir con tu trabajo si necesitas mas ayuda dímelo
comprueba lo echo no es muy bueno pero no se como vas de pascal y eso me limita suerte}

program profe;
uses
crt;

const
n = 10;
type
str = string[15];
horario = record
num_carnet : str;
salario : real
end;

arreglo_hor = array [1..n] of horario;
antigueda = record
anio : byte;
porc : real
end;

arreglo_ant = array [1..5] of antigueda;
nombre = record
nom1 : str;
ape1 : str;
end;

reg_grupo = record
nom_asig : str;
num_est : byte;
horas : byte
end;

empleado = record
num_car : str;
nom_emp : nombre;
anio_ant : byte;
num_grupo : byte;
grupo : array [1..n] of reg_grupo
end;

arreglo_reg = array [1..n] of empleado;

var
re : arreglo_reg;
ta : arreglo_ant;
sh : arreglo_hor;

procedure entrada_datos_Arreglo_hora;
var
tg : char;
n : integer;
sal : boolean;
begin
writeln('Entrada de datos Arreglo_hora');
n := 1;
repeat
writeln;
writeln('num_carnet : ');
readln(sh[n].num_carnet);
writeln('salario : ');
readln(sh[n].salario);
writeln;
sal := false;
writeln('Desea Entrar Mas Datos [S/N]');
repeat
tg := readkey;
until tg in ['s','S','n','N'];
if tg in ['s','S'] then
begin
n := n + 1;
if n > 10 then
begin
sal := true;
end;
end;
if tg in ['n','N'] then
begin
sal := true;
end;
until sal = true;
end;

procedure entra_datos_arreglo_ant;
var
tf : char;
sal : boolean;
n : integer;
begin
writeln('Entrada de datos arreglo_ant');
writeln;
n := 1;
repeat
writeln('A¤o : ');
readln(ta[n].anio);
writeln('porc : ');
readln(ta[n].porc);
writeln;
sal := false;
writeln('Desea Entrar Mas Datos [S/N]');
repeat
tf := readkey;
until tf in ['s','S','n','N'];
if tf in ['s','S'] then
begin
n := n + 1;
if n > 10 then
begin
sal := true;
end;
end;
if tf in ['n','N'] then
begin
sal := true;
end;
until sal = true;
end;

procedure entra_datos_arreglo_reg;
var
sal : boolean;
k, n : integer;
th : char;
begin
writeln('Entrada de datos arreglo_reg');
writeln;
n := 1;
repeat
writeln('num_car : ');
readln(re[n].num_car);
writeln('nom_emp nom1 : ');
readln(re[n].nom_emp.nom1);
writeln('nom_emp ape1 : ');
readln(re[n].nom_emp.ape1);
writeln('anio_ant : ');
readln(re[n].anio_ant);
writeln('num_grupo : ');
readln(re[n].num_grupo);
k := 1;
repeat
writeln('nom_asig : ');
readln(re[n].grupo[k].nom_asig);
writeln('num_est : ');
readln(re[n].grupo[k].num_est);
writeln('horas : ');
readln(re[n].grupo[k].horas);
k := k + 1;
until k > 10;
sal := false;
writeln('Desea Entrar Mas Datos [S/N]');
repeat
th := readkey;
until th in ['s','S','n','N'];
if th in ['s','S'] then
begin
n := n + 1;
if n > 10 then
begin
sal := true;
end;
end;
if th in ['n','N'] then
begin
sal := true;
end;
until sal = true;
end;

procedure presenta_datos;
var
n : integer;
begin
writeln('Los Datos A Mostrar Son');
writeln(' N§ Carne Salario');
writeln;
for n := 1 to 10 do
begin
writeln(sh[n].num_carnet,' ',sh[n].salario);
end;
end;

procedure gasto_uni;
var
n : integer;
gasto : real;
begin
writeln('El Gasto universidad en Salarios es.....');
writeln;
gasto := 0;
for n := 1 to 10 do
begin
gasto := gasto + sh[n].salario;
end;
writeln;
writeln('El Gasto Total En Salarios Es : ',gasto:10:2);
end;




begin
clrscr;
entrada_datos_Arreglo_hora;
clrscr;
entra_datos_arreglo_ant;
clrscr;
entra_datos_arreglo_reg;
clrscr;
presenta_datos;
clrscr;
gasto_uni;
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Planilla academica

Publicado por Jayson Maltez (2 intervenciones) el 15/06/2011 00:33:07
Buenas tardes Ramon.

Muchas gracias por haberme ayudado en este programa, que lo he mirado un poco complicado por el asunto de la logica.

Cualquier cosa te escribo. lo correre en pascal y le are algunos detalles.

pasa buenas tardes.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar