Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TRABAJO PRÁCTICO N° 4
COMISION: C8
GRUPO: G4
INTEGRANTES:
CEA:
program CEA;
uses crt;
type
2
TEmpleado = record
legajo: integer;
nombre: String[50];
sector: char;
ingreso: integer;
estado: integer;
end;
var
empleados: TVector;
n,opc,legajo,pos: integer;
begin
writeln('*******************************************');
writeln('*******************************************');
readln(opc);
end;
3
procedure cargarDatos(var empleados:TVector; var n: integer);
var
i,estado1:integer;
begin
readln(n);
for i := 1 to n do
with empleados[i] do
begin
writeln;
write('Estado: ');
repeat
readln(estado1);
estado:=estado1
else
end;
end;
with e do
begin
writeln('Legajo: ',legajo);
writeln('Nombre: ',nombre);
writeln('Sector: ',sector);
writeln('Ingreso: ',ingreso);
writeln('Estado: ',estado);
end;
writeln;
end;
var
i:integer;
begin
writeln('Lista de empleados');
writeln('==================');
for i := 1 to n do
mostrarEmpleado(empleados[i]);
readkey;
end;
Trabajo Práctico N°4 C8G4 Año: 2015
Var
Temp: TEmpleado;
Begin
5
Temp:= X;
X:= Y;
Y:= Temp
End;
Var
Done: Boolean;
Jump,
I,J : Integer;
Begin
Jump := N;
Begin
Repeat
Done := true;
For J := 1 To (N - Jump) Do
Begin
I := J + Jump;
Begin
Swap(A[J], A[I]);
Trabajo Práctico N°4 C8G4 Año: 2015
Done := false
End;
End;
Until Done;
6
End
End;
var
i, estado: integer;
begin
readln(estado);
ShellSort(A,n);
for i := 1 to n do
mostrarEmpleado(A[i]);
end;
var
i,j:integer;
x:integer;
aux: TEmpleado;
begin
i:=l;
j:=r;
repeat
while v[i].legajo<x do
inc(i);
while v[j].legajo>x do
7
dec(j);
if i<=j then
begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
inc(i);
dec(j);
end;
until i>j;
if l<j then
QuickSort(l,j,v);
if l<r then
QuickSort(i,r,v);
end;
encontrado : boolean ;
begin
E := 1 ; D := n ;
encontrado := false;
begin
encontrado := true
8
else
E := medio + 1
else
D := medio - 1;
end;
if ( encontrado ) then
BusquedaBinaria := medio
else
BusquedaBinaria := 0;
end;
var
begin
readln(legajo);
QuickSort(1,n,A);
mostrarEmpleado(A[pos])
else
writeln('No existe...');
readkey;
9
end;
var
i:integer;
begin
n:=n+1;
writeln('Ingrese nombre');
readln(empleados[n].nombre);
empleados[n].legajo:=legajo;
writeln('Ingrse sector');
readln(empleados[n].sector);
Writeln('Ingrese el ingreso');
readln(empleados[n].ingreso);
writeln('Ingrese el estado');
readln(empleados[n].sector);
end;
pos: integer;
begin
readln(legajo);
Trabajo Práctico N°4 C8G4 Año: 2015
if(pos = 0)then
begin
agregar(empleados,n,legajo);
end
else
mostrarempleado(empleados[pos]);
end;
var
estado2:integer;
begin
repeat
readln(estado2);
empleados[pos].estado:=estado2
else
end;
begin
Trabajo Práctico N°4 C8G4 Año: 2015
repeat
clrscr;
menu(opc);
case opc of
11
1: cargarDatos(empleados,n);
2:
begin
if n>0 then
mostrarDatos(empleados,n)
else
end;
3:
begin
if n>0 then
begin
mostrarPorEstado(empleados, n);
readkey;
end
else
end;
4:
begin
if n>0 then
buscarPorLegajo(empleados,n)
Trabajo Práctico N°4 C8G4 Año: 2015
else
end;
5:
12
begin
if n>0 then
begin
QuickSort(1,n,empleados);
mostrarDatos(empleados,n);
end
else
end;
6:
begin
if n>0 then
buscarEmpleado(Empleados, n)
else
end;
7:
begin
if n>0 then
begin
writeln('Ingrese el legajo');
readln(legajo);
Trabajo Práctico N°4 C8G4 Año: 2015
if(pos = 0)then
else
13
begin
Modificar(empleados, n,pos);
mostrardatos(empleados,n);
end;
end
else
end;
else
writeln('Opcion incorrecta...')
end;
until opc = 0;
end.
Punto 1
Vector original
Z X E C T W A Y B M E
W X E C T Z A Y B M E
W A E C T Z X Y B M E
Trabajo Práctico N°4 C8G4 Año: 2015
W A E C T Z X Y B M E
W A E B T Z X Y C M E
14
Comparó T<M: No, realizó el intercambio,
W A E B M Z X Y C T E
W A E B M E X Y C T Z
E A W B M E X Y C T Z
E A M B W E X Y C T Z
E A M B W E X Y C T Z
E A M B W E C Y X T Z
E A M B W E C Y X T Z
E A M B W E C Y X T Z
E A M B W E C Y X T Z
E A M B W E C Y X T Z
E A M B W E C T X Y Z
E A C B M E W T X Y Z
C A E B M E W T X Y Z
Distancia 1:
A C E B M E W T X Y Z
A C B E M E W T X Y Z
A C B E E M W T X Y Z
Comparó, de nuevo:
A B C E E M W T X Y Z
C<E: SI; E<E: NO (pero no se modifica nada); E<M: si; M<W: Si; W<T: NO, realizó el intercambio:
A B C E E M T W X Y Z
Gap: 5,3,1
W X E C T Z A Y B M E
W A E C T Z X Y B M E
W A E C T Z X Y B M E
W A E B T Z X Y C M E
W A E B M Z X Y C T E
W A E B M E X Y C T Z
Trabajo Práctico N°4 C8G4 Año: 2015
Distancia 3:
B A E W M E T Y C X Z
B A E W M E T Y C X Z
A B E E M W C T Y X Z
A B E E M C W T Y X Z
A B E E C M W T Y X Z
A B E C E M W T Y X Z
A B C E E M W T Y X Z
Vector resultante:
A B C E E M W T Y X Z
Se observa, que el método Shellsort, la primera parte comparando con el segundo (gap
5,3,1), toma más tiempo, por la distancia 5,2,1 que la segunda parte.
Punto 2
100 25 18 2 36 11 1 67 39 18 3
Vector resultante;
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
3 25 18 2 36 11 1 67 39 18 100
1 25 18 2 36 11 3 67 39 18 100
1 3 18 2 36 11 25 67 39 18 100
1 3 18 2 36 11 25 67 39 18 100
1 3 18 2 36 11 25 67 39 18 100
1 2 18 3 36 11 25 67 39 18 100
1 2 3 18 36 11 25 67 39 18 100
1 2 3 18 36 11 25 67 39 18 100
1 2 3 18 36 11 25 67 39 18 100
1 2 3 18 18 11 25 67 39 36 100
1 2 3 18 18 11 25 67 39 36 100
1 2 3 18 18 11 25 67 39 36 100
1 2 3 18 18 11 25 67 39 36 100
1 2 3 18 11 18 25 67 39 36 100
1 2 3 11 18 18 25 67 39 36 100
1 2 3 11 18 18 25 67 39 36 100
1 2 3 11 18 18 25 67 39 36 100
1 2 3 11 18 18 25 67 39 36 100
1 2 3 11 18 18 25 67 39 36 100
1 2 3 11 18 18 25 36 39 67 100
1 2 3 11 18 18 25 36 39 67 100
1 2 3 11 18 18 25 36 39 67 100
VECTOR ORDENADO
1 2 3 11 18 18 25 36 39 67 100
El orden que tiene el método rápido (quick sort) es O(n·log n), se basa en el hecho que
los intercambios deben ser realizado sobre distancias grandes. El pivote es cualquier
elemento de la lista a ordenar, buscó la posición que le corresponda , acomodamos a la
izquierda los >x y a la derecha <x y por de la recursividad ordenamos. La desventaja de este
método es que se base en mucha recursividad, mucha diferencia entre el peor y el mejor caso,
(el mejor de los casos, cuando el pivote queda en el centro, peor de los casos cuando el pivote
se inclina hacia un lado).
Punto 3
program punto3;
uses
crt;
type
var
w:tvector;
Trabajo Práctico N°4 C8G4 Año: 2015
t:tvector;
n:integer;
i, op:integer;
begin
i:=0;
repeat
i:=i+1;
readln(w[i]);
t[i]:=i;
readln(op);
until op=0;
n:=i
end;
procedure Mostrarvector(w:tvector;t:tvector;n:integer);
var
i:integer;
begin
i:=0;
writeln('******************');
Trabajo Práctico N°4 C8G4 Año: 2015
for i:=1 to n do
end;
22
procedure Mostrarvectorresultante(w:tvector;t:tvector;n:integer);
var
i:integer;
begin
i:=0;
writeln('******************');
for i:=1 to n do
end;
var
i,j,x,aux:integer;
begin
i:=l;
j:=r;
repeat
if i<=j then
Trabajo Práctico N°4 C8G4 Año: 2015
begin
aux:=t[i];
t[i]:=t[j];
t[j]:=aux;
23
inc(i);
dec(j);
end;
until i>j;
end;
begin
cargarvector(w,t,n);
Mostrarvector(w,t,n);
Quick_Sort(1,n,w,t);
Mostrarvectorresultante(w,t,n);
readkey;
end.
Punto 4
program TP4P4;
uses crt;
type
TR=record
C1:integer;
C2:char;
Trabajo Práctico N°4 C8G4 Año: 2015
C3:real;
end;
var
24
Matriz:TMatriz;
op,n,m:integer;
begin
writeln('***************MENU*****************************');
readln(op);
clrscr;
end;
begin
readln(V.c1);
readln(V.c2);
readln(V.c3);
Trabajo Práctico N°4 C8G4 Año: 2015
end;
readln(n);
readln(m);
for i:=1 to n do
for j :=1 to m do
begin
cargarVector(X[i,j]);
end;
end;
Procedure MostrarVector(V:TR);
begin
writeln(V.c1);
writeln(V.c2);
writeln(V.c3:7:3);
end;
Trabajo Práctico N°4 C8G4 Año: 2015
Procedure MostrarMatriz(X:TMatriz;n,m:integer);
var i,j:integer;
begin
for i :=1 to n do
26
begin
writeln();
for j:=1 to m do
begin
writeln();
MostrarVector(X[i,j]);
end;
end;
readkey;
end;
Var
Temp: TR;
Begin
Temp:= X;
X:= Y;
Y:= Temp
End;
Var
Done: Boolean;
Trabajo Práctico N°4 C8G4 Año: 2015
Jump,I,J,f : Integer;
Begin
readln(f);
27
Jump := N;
Begin
Repeat
Done := true;
For J := 1 To (N - Jump) Do
Begin
I := J + Jump;
Begin
Swap(X[f,J], X[f,I]);
Done := false
End;
End;
Until Done;
End
End;
Var
Done: Boolean;
Jump,I,J,c: Integer;
Trabajo Práctico N°4 C8G4 Año: 2015
Begin
readln(c);
Jump := M;
28
While (Jump > 1) Do
Begin
Repeat
Done := true;
For J := 1 To (M - Jump) Do
Begin
I := J + Jump;
Begin
Swap(X[J,c], X[I,c]);
Done := false
End;
End;
Until Done;
End
End;
begin
n:=0;
m:=0;
op:=0;
repeat
Trabajo Práctico N°4 C8G4 Año: 2015
menu(op);
case op of
1: cargarMatriz(matriz,n,m);
2: MostrarMatriz(matriz,n,m);
29
3:begin
ShellSortFila(matriz,N);
MostrarMatriz(matriz,n,m);
end;
4:begin
ShellSortColumna(matriz,M);
MostrarMatriz(matriz,n,m);
end;
5:writeln('Salir');
else
writeln('Opcion incorrecta..');
end;
until (op=5);
end.
Punto 5
program punto5;
uses
crt;
type
TPersona = record
Trabajo Práctico N°4 C8G4 Año: 2015
nombre:string[50];
sueldo:real;
end;
var
empleado: TVectorEmpleados;
n: integer;
begin
begin
with empleado[1] do
begin
nombre := 'Mendez';
sueldo := 899.5;
end;
end;
begin
with empleado[2] do
begin
nombre := 'Ramos';
sueldo := 2575.3;
end;
end;
begin
with empleado[3] do
Trabajo Práctico N°4 C8G4 Año: 2015
begin
nombre := 'Mamani';
sueldo := 1896.5;
end;
31
end;
begin
with empleado[4] do
begin
nombre := 'Tolaba';
sueldo := 789.2;
end;
end;
begin
with empleado[5] do
begin
nombre := 'Condori';
sueldo := 3582.7;
end;
end;
begin
with empleado[6] do
begin
nombre := 'Tolaba';
sueldo := 1010.9;
end;
end;
Trabajo Práctico N°4 C8G4 Año: 2015
begin
with empleado[7] do
begin
nombre := 'Aban';
32
sueldo := 507.9;
end;
end;
begin
with empleado[8] do
begin
nombre := 'Lamas';
sueldo := 4754.7;
end;
end;
begin
with empleado[9] do
begin
nombre := 'Gomez';
sueldo := 695.9;
end;
end;
begin
with empleado[10] do
begin
nombre := 'Cruz';
sueldo := 2566.8;
Trabajo Práctico N°4 C8G4 Año: 2015
end;
end;
begin
with empleado[11] do
33
begin
nombre := 'Abalos';
sueldo := 775.6;
end;
end;
begin
with empleado[12] do
begin
nombre := 'Ramirez';
sueldo := 2000.8;
end;
end;
begin
with empleado[13] do
begin
nombre := 'Acosta';
sueldo := 1555.6;
end;
end;
n:=13
end;
Trabajo Práctico N°4 C8G4 Año: 2015
var
i,k,j:integer;
y:TPersona;
34
begin
For I := 1 To (N - 1) Do
Begin
K := I;
Y := empleado[I];
For J := (I + 1) To N Do
Begin
K := J;
Y := empleado[J];
End;
empleado[K] := empleado[I];
empleado[I] := Y;
End;
end;
var
i,k,j:integer;
y:TPersona;
begin
For I := 1 To (N - 1) Do
Trabajo Práctico N°4 C8G4 Año: 2015
Begin
K := I;
Y := empleado[I];
For J := (I + 1) To N Do
35
If (empleado[J].sueldo < Y.sueldo) Then
Begin
K := J;
Y := empleado[J];
End;
empleado[K] := empleado[I];
empleado[I] := Y;
End;
end;
var
i: integer;
begin
for i:=1 to 13 do
begin
with empleado[i] do
begin
writeln('----------Empleados----------');
writeln(nombre);
writeln(sueldo:7:2);
Trabajo Práctico N°4 C8G4 Año: 2015
writeln;
end;
end;
end;
36
begin
CargarEmpleados(empleado, n);
Seleccion(empleado, n);
SeleccionSueldo(empleado, n);
MostrarEmpleado(empleado, n);
readkey;
end.