Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
com
UNIVERSIDAD NACIONAL
N
ABIERTA
A
RE
EA DE INGEN
NIERA
CAR
RRERA DE IN
NGENIERA DE SISTEMA
AS
TARE
EA
TRAB
BAJO PRACTIICO: X
ASIGN
NATURA: CO
OMPUTACI
N I
CODIGO: 323
FECH
HA DE ENTRE
EGA AL ESTU
UDIANTE: 28//09/2013
co
m
Adjun
nto a la primeraa prueba parciaal
s.
FECH
HA DE DEVOL
LUCIN: 31/0
01/2014
ro
Adjun
nto a la prueba integral
.m
fo
NOMB
BRE DEL EST
TUDIANTE: YANIRE
Y
TAB
BORDA
na
CEDU
ULA DE IDEN
NTIDAD:
tu
CORR
REO:
CENT
TRO LOCAL: ZULIA
Z
CARR
RERA: 280
dm
yc
on
TELFONO:
.a
NUME
ERO DE ORIG
GINALES:
LAPSO: 2013/2
RESU
ULTADOSDECORRECCI
N:
OBJ.NO
0:NL 1:L
10
11
1
12
13
3
Esp
pecialista:Sole
edadCentenoIngen
nieradeSistem
masEEvaluador:San
ndraSnchez
CONTENIDO
Pg.
3
5
5
10
14
15
15
15
15
s.
co
m
16
24
dm
yc
on
tu
na
.m
fo
ro
27
.a
co
m
Datos de entrada:
Placa
Nmero de pasajeros
Alcabala
Fecha
na
.m
fo
ro
s.
tu
2- Puesto
dm
yc
on
3- Taxi
4- Transporte Pblico
.a
Datos de Salida:
co
m
ro
s.
.m
fo
na
Descripcin de procesos:
Todas las entradas deben ser validadas antes de ingresar al arreglo segn la
naturaleza que le corresponda.
Para incluir vehculos en el arreglo se leen las entradas del teclado y se van
almacenando en el arreglo.
.a
dm
yc
on
tu
Para eliminar un vehculo se lee por teclado la placa, se realiza una bsqueda y si
no existe la placa en el arreglo se repite el proceso de lectura (de placa a eliminar)
hasta conseguir una placa existente. Luego se elimina el registro del arreglo.
co
m
ro
s.
Etapa I: Dialogo
A continuacin se plantean y responden una serie de preguntas para una
definicin clara y precisa del problema:
.m
fo
.a
dm
yc
on
tu
na
Alcabala
Fecha
10
Tipo de Vehiculo
DESCRIPCIN
5 enteros
6 enteros (xxx.xxx)
(DD/MM/AAAA)
A = Particulares
B = Puesto
C = Taxi
D = Transporte Pblico
10
5
5
4
4
(DD/MM/AAAA)
5 enteros (xx.xxx)
5 enteros (xx.xxx)
(2 Enteros, 2 Decimal) (xx,xx%)
(2 Enteros, 2 Decimal) (xx,xx%)
5
3
5
4
5 enteros
3 enteros
5 enteros (xx.xxx)
2 Enteros, 2 Decimal (xx,xx)
5
3
3 enteros
6 enteros (xxx.xxx)
.a
dm
yc
on
tu
na
.m
fo
ro
s.
5
6
co
m
DATOS
Placa
Numero de pasajeros
*Datos de Entrada:
-
co
m
*MEN PRINCIPAL*
1. Incluir
ro
s.
2. Consultar
.m
fo
3. Modificar
dm
yc
on
tu
na
4. Eliminar
8. Salida
.a
Opcin: _
*Datos de Proceso:
transporte
-
pblicos)
Mostrar por pantalla, cuando realice una Consulta de un vehculo los datos de
registrados por grupo.
Numero de pasajeros:
Alcabala:
Fecha:
s.
Placa:
ro
co
m
.m
fo
1- Particulares
2- Puesto
na
3- Taxi
dm
yc
on
tu
4- Transporte Pblico
Datos de Salida:
-
.a
Fechas Procesadas
Vehculos Procesados
Fecha
Placa
Das transitados
Promedio de pasajeros
Tipo de vehculos
co
m
s.
na
.m
fo
ro
tu
dm
yc
on
.a
Pg. X
Alcabala: xxxxxxxx
FECHA
co
m
PLACA
ro
s.
.m
fo
tu
Pg. X
Alcabala: xxxxxxxx
na
w
w
.a
dm
yc
on
TIPO DE
VEHCULOS
PASAJEROS
VEHCULO
CANTIDAD PORCENTAJE
CONTABILIZADOS
====================================================
XXXXX
XXX
XX.XX%
XXX.XXX
XXXXX
XXX
XX.XX%
XXX.XXX
XXXXX
XXX
XX.XX%
XXX.XXX
XXXXX
XXX
XX.XX%
XXX.XXX
XXXXX
XXX
XX.XX%
XXX.XXX
====================================================
TOTAL DE VEHCULOS PROCESADOS: XX.XXX
ENTRADAS
.m
fo
ro
Fecha
Cantidad de vehculos que salen
Cantidad de vehculos que entran
Porcentaje de vehculos que salen
Porcentaje de vehculos que entran
Placa
Nmero de alcabalas transitadas
Das transitados
Promedio de pasajeros
Tipo de vehculos
Cantidad de vehculos segn su tipo y por
alcabalas
Porcentaje de vehculos segn su tipo y por
alcabalas
Cantidad de pasajeros contabilizados
co
m
Placa
Nmero
de
pasajeros
Alcabala
Fecha
Tipo de Vehculo
s.
SALIDAS
TIPO
String [5]
Entero
(Integer)
Variable
Alcab
String [8]
Variable
Fecha
Variable
TipoVehic
Entero
(Integer)
Char
na
VARIABLE
Placa
NumPasaj
dm
yc
on
de
ESTRUCTURA
Variable
Variable
tu
DATOS
Placa
Nmero
pasajeros
Alcabala
Fecha
.a
Tipo de Vehiculo
Pre condiciones:
(Fecha1,
Fecha2,,
Fechan)
n>0
{1,...,
n}:
Fechai
{1,,31;1,,12;2000,,9999}
11
ESTRUCTURA
Variable
VARIABLE
Fecha
Cantidad de vehculos
que salen
Cantidad de vehculos
que entran
Porcentaje de vehculos
que salen
Porcentaje de vehculos
que entran
Placa
Nmero de alcabalas
transitadas
Das transitados
Variable
CantVehicSal
Variable
CantVehicEnt
Variable
PorctjVehicSal
TIPO
Entero
(Integer)
Entero
(Integer)
Entero
(Integer)
Real
Variable
PorctjVehicEnt
Real
Variable
Variable
Placa
NumAlcabTranst
Promedio de pasajeros
Tipo de vehculos
Cantidad de vehculos
segn su tipo y por
alcabalas
Porcentaje de vehculos
segn su tipo y por
alcabalas
Cantidad de pasajeros
contabilizados
Variable
Variable
Variable
PromPasaj
TipoVehic
CantVehic
Variable
PorctjVehic
Real
Variable
CantPasajContab
Entero
(Integer)
s.
ro
.m
fo
DiasTranst
String [5]
Entero
(Integer)
Entero
(Integer)
Real
String [5]
Entero
(Integer)
.a
dm
yc
on
tu
na
Variable
co
m
DATOS
Fecha
(Fecha1,
Fecha2,,
Fechan)
n>0
{1,...,
n}:
Fechai
{1,,31;1,,12;2000,,9999}
-
s.
co
m
{1,,99,99}
.m
fo
ro
i {1,..., n}:
dm
yc
on
n>0 ^
tu
PorctjVehici {1%,,99,99%}}
na
.a
13
Operaciones
Trnsito Vehicular
Bsqueda por
fecha y
alcabala
Bsqueda por
placa del
vehculo
Bsqueda por
alcabala y tipo
de vehculo
co
m
Mantenimiento
s.
Incluir
.m
fo
ro
Consultar
Reporte Impreso
Estadstica
na
Modificar
dm
yc
on
tu
Eliminar
Descripcin:
.a
Mantenimiento
Declaracindevariablesyestructurasdedatos
Inicializacindelasvariablesyestructurasdedatos
Presentacindeopcionesenunmen
1.
2.
3.
4.
ro
s.
co
m
Reportes:
Leer datos.
Mostrar en pantalla. Ordenamiento de los datos de los vehculos por fecha y
placa
- Presentacin en pantalla de un listado en resumen de todos los vehculos
.m
fo
na
tu
de lectura de campos por pantalla; la misma es utilizada tanto para incluir datos nuevos
dm
yc
on
como para modificar datos ya existentes de tal forma que facilita su mantenimiento.
Etapa V: Codificacin
.a
.a
dm
yc
on
tu
na
.m
fo
ro
s.
co
m
Program TransitoNacional;
Uses;
<Declaracin de Variables identificadas en el proceso de particin>
Begin
{pre:<Pre-condicin del problema>}
{Paso 1: <Mantenimiento / Administracin Coordinacin de Trnsito Nacional>}
- Procedimiento de Incluir Vehculos:
- Procedimiento de Lectura de Placa y Validacin
- Procedimiento de Bsqueda de Placa
- Procedimiento de Lectura de Datos de Vehculo y Validacin
- Procedimiento de Consultar Vehculos:
- Procedimiento de Lectura de Placa y Validacin
- Procedimiento de Bsqueda de Placa
- Procedimiento de Lectura de Datos de Vehculo
- Procedimiento de Modificar Vehculos:
- Procedimiento de Lectura de Placa y Validacin
- Procedimiento de Bsqueda de Placa
- Procedimiento de Lectura de Datos de Vehculo, Modificacin y Validacin
- Procedimiento de Eliminar Vehculos:
- Procedimiento de Lectura de Placa y Validacin
- Procedimiento de Bsqueda de Placa
- Procedimiento de Lectura de Datos de Vehculo y Eliminacin
{Paso 2: <Bsqueda de nmero de Placa>}
- Procedimiento de Bsqueda de Placa, Encontrado o no
- Procedimiento de Lectura de Placa y Validacin
{Paso 3: <Ordenamiento de Vehculos por Placa>}
- Procedimiento de Ordenamiento en el sistema
{Paso 4: <Reporte de Vehculos>}
- Procedimiento de Reportes
- Procedimiento de Ordenamiento de Arreglo:
- Por Fecha de manera ascendente
- Por nmero de Placa de manera ascendente
- Por Tipo de Vehculo de manera ascendente
- Procedimiento de Listado de Vehculos con Resultados
{post:<Pos-condiciones del problema>}
End.
***********************************************************************************
PROGRAMA EN PSEUDOCDIGO Y ESTRUCTURA DE DATOS:
Programa Transito_Nacional;
Uses;
<Declaracin de Variables identificadas en el proceso de particin>
Inicio
{pre:<Pre-condicin del problema>}
16
.m
fo
ro
s.
co
m
.a
dm
yc
on
tu
na
17
s.
co
m
procedimiento leeralcabala;
inicio
repetir
leer(vehiculo);
hasta (longitud de cadena (vehiculo)>1) y (longitud de cadena (vehiculo)<=10) y (vehiculo<>' ');
fin;
.a
dm
yc
on
tu
na
.m
fo
ro
procedimiento leerfecha;
inicio
repetir
repetir
repetir
escribir (DDMMAAAA);
leer(vehiculo);
di<-copiar(vehiculo);
validar(di,valor,valido);
hasta (valido=0) y (valor entero(valor)) y (valor>0) y (valor<=31);
me<-copiar(vehiculo);
validar(me,valor,valido);
hasta (valido=0) y (valor entero(valor)) y (valor>0) y (valor<=12);
an<-copiar(vehiculo);
validar(an,valor,valido);
hasta (valido=0) y (valor entero(valor)) y (valor>=2000) y (valor<=2014) y (longitude de
cadena(vehiculo)<8);
end;
procedimiento leertipovehic;
inicio
repetir
repetir
escribir ('1 = Particulares / 2 = Puesto / 3 = Taxi / 4 = Transporte Publico');
leer(vehiculo);
hasta (longitud de cadena(vehiculo)=1);
vehiculo<- upcase(vehiculo);
hasta (vehiculo='1') o (vehiculo='2') o (vehiculo='3') o (vehiculo='4');
si vehiculo='1' entonces escribe('Particulares')
sino si vehiculo='2' entonces escribe ('Puesto')
sino si vehiculo='3' entonces escribe ('Taxi')
sino si vehiculo='4' entonces escribe ('Transporte Publico');
fin;
{ fin procedimientos lectura y validacin }
18
ro
s.
co
m
{-------------------------------------------------------------------------------------------------}
- Procedimiento de Consultar Vehculos:
- Procedimiento de Lectura de Placa y Validacin
- Procedimiento de Bsqueda de Placa
- Procedimiento de Lectura de Datos de Vehculo
.m
fo
dm
yc
on
tu
na
inicio
mostrarCampos;
escribir(INTRODUZCA EL NUMERO DE PLACA A CONSULTAR: );
repetir
leerplaca;
hasta (valido=0) y (encontrado=1) y (longitud(placa)=7) y (valor<>0);
mostrardatos;
fin;
.a
{-------------------------------------------------------------------------------------------------}
- Procedimiento de Modificar Vehculos:
- Procedimiento de Lectura de Placa y Validacin
- Procedimiento de Bsqueda de Placa
- Procedimiento de Lectura de Datos de Vehculo, Modificacin y Validacin
{Procedimiento de Modificar vehculo}
procedimiento modificar;
inicio
seguir:='S';
inicio
mientras (seguir='S') o (seguir='s') hacer
inicio
mostrarCampos;
escribir(INTRODUZCA EL NUMERO DE PLACA A MODIFICAR: );
repetir
leerplaca;
hasta (valido=0) y (encontrado=1) y (longitud(placa)=7) y (valor<>0);
mostrardatos;
inicio
repetir
19
co
m
en caso itemMod de
1: leerplaca;
2: leernumpasajeros;
3: leeralcabala;
4: leerfecha;
5: leertipovehic;
fin;
escribir(ITEM MODIFICADO EXITOSAMENTE');
escribir('DESEA SEGUIR MODIFICANDO ITEMS (S/N):);
fin;
fin;
.m
fo
ro
na
s.
{-------------------------------------------------------------------------------------------------}
.a
dm
yc
on
tu
20
s.
ro
.m
fo
na
tu
dm
yc
on
co
m
{-------------------------------------------------------------------------------------------------}
{Paso 3: <Ordenamiento de Vehculos por Placa>}
- Procedimiento de Ordenamiento en el sistema
.a
21
na
.m
fo
ro
s.
co
m
.a
dm
yc
on
tu
22
co
m
.a
dm
yc
on
tu
na
.m
fo
ro
s.
23
dm
yc
on
tu
na
.m
fo
ro
s.
co
m
.a
Objetivo7.ProbarAlgoritmoutilizandoelConceptodeRobustez
Nmeros:
1- Convertirlo en nmero y validarlo.
2- Longitud del nmero, no nulo, entero o no entero, cantidad de dgitos, cantidad de
decimales.
Cadenas:
1. Longitud de cadena determinada, no vaca.
2. Si es un carcter, revisar longitud de cadena = 1, cuales caracteres especficos acepta.
Ejemplos:
co
m
PLACA DE VEHICULO:
s.
ro
.m
fo
var
placa: cadena
na
inicio
repetir
dm
yc
on
tu
leer (placa)
.a
NUMERO DE PASAJEROS:
FECHA:
25
co
m
leer (fecha)
di <- copiar(fecha, 1 , 2)
validar (di , valor , valido)
s.
ro
me <- copiar(fecha, 3 , 2)
.m
fo
na
an:=copiar(fecha, 5 , 4)
tu
dm
yc
on
.a
TIPO DE VEHICULO:
Debe ser un solo carcter, no vaco, con slo 4 valores posibles: '1' o '2' o '3' o '4',
TipoVehic:cadena;
inicio
repetir
repetir
leer(TipoVehic)
convertir en mayusculas la cadena (TipoVehic)
hasta (longitud_cadena (TipoVehic) =1)
hasta (TipoVehic = '1' ) o (TipoVehic = '2' ) o (TipoVehic = '3' ) o (TipoVehic = '4' )
fin
26
EL ARREGLO:
Otro caso a tomar en cuenta para la robustez del programa consiste en considerar cuatro estados posibles
del arreglo: vaco, con un solo elemento, con algunos registros con datos y totalmente lleno.
1- VACIO:
1.1-
1.2-
1.3-
2- UN VEHICULO:
No ordenar el arreglo.
2.2-
co
m
2.1-
s.
ro
3- VARIOS REGISTROS:
.m
fo
3.1- Al ingresar un vehculo nuevo, utilizar lugares vacos ms cerca del inicio del
Arreglo para mejorar el desempeo del programa.
4- TOTALMENTE LLENO:
dm
yc
on
na
tu
3.2-
.a
Type
uses crt;
PROGRAM TRANSITO_NACIONAL;
Dvehiculos=Record
Placa: String[5]
Numpasaj: Integer
Alcab: String[8]
Fecha:string[10]
Tipovehic: string[20]
Cantvehicsalen: Integer
Cantvehient: Integer
Porctvehicsale:real
Porctvehicentr:real
Numalcabtrans:integer
Diastrans:integer
27
co
m
Cantidad: integer
Buscar:string
Lugar,exito:integer
ro
s.
Alcabalreport: string
.m
fo
procedure Buscplaca;
begin
lugar:=0
na
exito:=0
f or :=1 to 50 do
tu
begin
dm
yc
on
for contad:=1 to 17 do
begin
vehiculo[contador,contad]:='..';
end;
for contad:=1 to 17 do
.a
begin
arrayauxiliar[contador]:='..';
end;
end;
end;
{-------------------------------------------------------------------------------------------------------------------------------}
{Dibujar campos vacios en pantalla}
procedure mostrarCampos;
begin
gotoxy(25,2);
writeln(' COORDINACION DE TRANSITO NACIONAL ');
gotoxy(4,4);
writeln('DATOS DEL VEHICULO ');
gotoxy(1,7);
writeln(' 1. Placa: ');
writeln('
writeln('
writeln('
');
2. Numero de Pasajeros: ');
');
28
3. Alcabala: ');
writeln('
');
');
5. Tipo de Vehiculo: ');
gotoxy(4,21);
writeln('--------------------------------------------------------------------------');
end;
{-------------------------------------------------------------------------------------------------------------------------------}
{ Mostrar datos de vehiculo encontrado }
procedure mostrardatos;
begin
{ escribir placa }
co
m
gotoxy(15,7);
write(vehiculo[tt,1]);
{ escribir numero de pasajeros }
s.
gotoxy(29,9);
ro
write(vehiculo[tt,2]);
.m
fo
{ escribir alcabala }
gotoxy(18,11);
write(vehiculo[tt,3]);
na
{ escribir fecha }
gotoxy(15,13);
tu
write(vehiculo[tt,4]);
gotoxy(26,15);
write(vehiculo[tt,5]);
if vehiculo[tt,5][26]='1' then
begin
.a
gotoxy(26,15);
write('Particulares ');
end;
dm
yc
on
begin
if vehiculo[tt,5]='2' then
gotoxy(26,15);
write('Puesto );
'
end;
if vehiculo[tt,5]='3' then
begin
gotoxy(26,15);
write('Taxi );
'
end;
if vehiculo[tt,5]='4' then
begin
gotoxy(26,15);
write('Transporte Publico); '
end;
29
co
m
end;
end;
end;
ro
s.
{-------------------------------------------------------------------------------------------------------------------------------}
.m
fo
');
tu
gotoxy(15,7);
na
gotoxy(4,22);
dm
yc
on
readln(placa);
val(placa,valor,valido);
if valido=0 then buscarplaca;
end;
.a
procedure leernumpasajeros;
begin
repeat
gotoxy(4,22);
readln(vehiculo[tt,2]);
val(vehiculo[tt,2],valor,valido);
until (valor=int(valor)) and (valido=0) and (length(vehiculo[tt,2])<=2) and (valor<>0);
end;
procedure leeralcabala;
begin
repeat
gotoxy(4,22);
write('Escribe el nombre de Alcabala ');
gotoxy(18,11);
readln(vehiculo[tt,3]);
30
'
gotoxy (15,13);
readln(vehiculo[tt,4]);
di:=copy(vehiculo[tt,4],1,2);
co
m
val(di,valor,valido);
until (valido=0) and (valor=int(valor)) and (valor>0) and (valor<=31);
.m
fo
an:=copy(vehiculo[tt,4],5,4);
ro
s.
me:=copy(vehiculo[tt,4],3,2);
val(me,valor,valido);
val(an,valor,valido);
until (valido=0) and (valor=int(valor)) and (valor>=2000) and (valor<=2014) and (length(vehiculo[tt,4])<9);
na
end;
tu
procedure leertipovehic;
dm
yc
on
begin
repeat
repeat
gotoxy(4,22);
gotoxy(26,15);
readln(vehiculo[tt,5]);
.a
until (length(vehiculo[tt,5])=1);
vehiculo[tt,5]:= upcase(vehiculo[tt,5][1]);
until (vehiculo[tt,5]='1') or (vehiculo[tt,5]='2') or (vehiculo[tt,5]='3') or (vehiculo[tt,5]='4');
gotoxy(26,15);
if vehiculo[tt,5]='1' then write('Particulares')
else if vehiculo[tt,5]='2' then write('Puesto')
else if vehiculo[tt,5]='3' then write('Taxi')
else if vehiculo[tt,5]='4' then write('Transporte Publico');
end;
{ fin procedimientos lectura y validacion }
{ Verificar si el arreglo esta vacio. }
function arrayvacio:integer;
begin
arrayvacio:=0;
31
co
m
s.
begin
ro
exito:=1;
.m
fo
posvacia:=j;
end;
j:=j+1;
na
end;
tu
end;
dm
yc
on
{-------------------------------------------------------------------------------------------------------------------------------}
{Incluir vehiculo}
procedure incluir;
begin
.a
seguir:='S';
begin
ClrScr;
tt:=posvacia;
mostrarCampos;
repeat
leerplaca;
');
32
');
gotoxy(55,24);
readln(seguir);
until (seguir='S') or (seguir='s') or (seguir='N') or (seguir='n');
end;
end;
{-------------------------------------------------------------------------------------------------------------------------------}
co
m
{ Consultar Vehiculo }
procedure consultar;
s.
begin
ro
seguir:='S';
.m
fo
na
ClrScr;
mostrarCampos;
tu
gotoxy(4,22);
dm
yc
on
.a
mostrardatos;
gotoxy(4,22);
begin
repeat
');
gotoxy(55,22);
readln(seguir);
until (seguir='S') or (seguir='s') or (seguir='N') or (seguir='n');
end;
end;
end;
{-------------------------------------------------------------------------------------------------------------------------------}
{Modificar vehiculo}
33
co
m
mostrardatos;
seguir:='S';
while (seguir='S') or (seguir='s') do
s.
begin
ro
repeat
.m
fo
gotoxy(4,22);
na
write('
gotoxy(55,22);
tu
readln(item);
dm
yc
on
val(item,itemMod,valido);
until (itemMod=int(itemMod)) and (valido=0) and (length(item)<=2) and (itemMod>0) and (itemMod<=5) and (itemMod<>0);
case itemMod of
1: leerplaca;
.a
2: leernumpasajeros;
4: leerfecha;
5: leertipovehic;
end;
3: leeralcabala;
gotoxy(4,22);
');
gotoxy(4,24);
write('DESEA SEGUIR MODIFICANDO ITEMS (S/N):
');
repeat
gotoxy(45,24);
gotoxy(45,24);
readln(seguir);
until (seguir='S') or (seguir='s') or (seguir='N') or (seguir='n');
end;
end;
end;
34
{-------------------------------------------------------------------------------------------------------------------------------}
{ Eliminar prestamo }
procedure eliminar;
begin
seguir:='S';
if arrayvacio=0 then
begin
while (seguir='S') or (seguir='s') do
begin
ClrScr;
mostrarCampos;
co
m
gotoxy(4,22);
write('INTRODUZCA EL NUMERO DE PLACA A ELIMINAR: ');
.m
fo
tt:=posicion;
mostrardatos;
gotoxy(4,23);
write('
');
dm
yc
on
repeat
na
');
gotoxy(4,24);
tu
write('
gotoxy(4,22);
write('
ro
leerplaca;
s.
repeat
');
gotoxy(4,22);
');
.a
gotoxy(44,24);
write('
');
readln(seguir);
gotoxy(44,22);
');
end;
gotoxy(4,24);
if arrayvacio=0 then
begin
write('DESEA ELIMINAR OTRO (S/N):
');
repeat
gotoxy(33,24);
write('
');
35
');
gotoxy(4,24);
write('LISTA DE VEHICULOS VACIA, PRESIONE ENTER
');
readln;
end;
co
m
end;
end;
s.
end;
.m
fo
ro
{-------------------------------------------------------------------------------------------------------------------------------}
{ Ordena el arreglo por placa de manera ascendente }
procedure ordenararreglo;
na
begin
for i:=1 to 20 do
tu
begin
dm
yc
on
for j:=1 to 21 do
begin
val(vehiculo[j,1],valor,valido);
if valor>valor2 then
begin
.a
val(vehiculo[j+1,1],valor2,valido2);
{Buscar placa}
function buscaralcabala:integer;
begin
posicion:=0;
encontrado:=0;
36
co
m
ClrScr;
gotoxy(21,2);
writeln('**COORDINACION DE TRANSITO NACIONAL**');
s.
gotoxy(25,4);
ro
.m
fo
gotoxy(2,6);
writeln('Alcabala: ');
gotoxy(8,8);
na
writeln('FECHA');
gotoxy(18,8);
tu
writeln('CANTIDAD DE VEHICULOS');
dm
yc
on
gotoxy(20,9);
writeln('SALEN');
gotoxy(32,9);
writeln('ENTRAN');
gotoxy(46,8);
.a
writeln('PORCENTAJE DE VEHICULOS');
gotoxy(49,9);
gotoxy(60,9);
writeln('SALEN');
gotoxy(2,10);
writeln('ENTRAN');
writeln('-----------------------------------------------------------------------------');
gotoxy(2,21);
write('-----------------------------------------------------------------------------');
gotoxy(2,22);
write('TOTAL DE FECHAS PROCESADAS:
');
end;
{-------------------------------------------------------------------------------------------------------------------------------}
{ Reporte de alcabala }
procedure reporte_alcabala;
var
37
');
gotoxy(13,6);
repeat
gotoxy(54,22);
write('
');
gotoxy(13,6);
readln(Alcabala);
until (length(vehiculo[j,3])>1) and (length(vehiculo[j,3])<=40) and (vehiculo[j,3]<>' ');
ordenararreglo;
s.
fila:=8;
co
m
val(Alcabala,valor,valido);
ro
for j:=1 to 20 do
.m
fo
begin
if (vehiculo[j,1]<>'..') then
begin
na
fila:=fila+1;
if i>17 then
tu
begin
dm
yc
on
fila:=fila+1;
end;
gotoxy(5,fila+1);
write(copy(vehiculo[j,4],1,2),'-',copy(vehiculo[j,4],3,2),'-',copy(vehiculo[j,4],5,4));
gotoxy(32,fila+1);
write(vehiculo[j,1],' ');
.a
gotoxy(20,fila+1);
write(vehiculo[j,1],' ');
gotoxy(49,fila+1);
write(vehiculo[j,1],' ');
gotoxy(60,fila+1);
write(vehiculo[j,1],' ');
end;
end;
gotoxy(2,24);
');
readln;
end;
end;
{-------------------------------------------------------------------------------------------------------------------------------}
38
co
m
writeln('NUMERO DE');
gotoxy(20,9);
writeln('ALCABALAS');
s.
gotoxy(42,8);
ro
writeln('DIAS');
.m
fo
gotoxy(39,9);
writeln('TRANSITADOS');
gotoxy(60,8);
na
writeln('PROMEDIO DE');
gotoxy(61,9);
tu
writeln('PASAJEROS');
dm
yc
on
gotoxy(2,10);
writeln('-----------------------------------------------------------------------------');
gotoxy(2,21);
write('-----------------------------------------------------------------------------');
gotoxy(2,22);
');
.a
end;
{-------------------------------------------------------------------------------------------------------------------------------}
{ Reporte de vehiculo }
procedure reporte_vehiculo;
var
fila:integer;
begin
if arrayvacio=0 then
begin
dibujareporte_vehiculo;
ordenararreglo;
fila:=8;
for j:=1 to 20 do
begin
if (vehiculo[j,1]<>'..') then
39
co
m
gotoxy(65,fila+1);
write(vehiculo[j,2],' ');
end;
s.
end;
');
.m
fo
ro
gotoxy(2,24);
readln;
end;
na
end;
dm
yc
on
tu
{-------------------------------------------------------------------------------------------------------------------------------}
{dibuja pantalla reporte tipo de vehiculo}
procedure dibujareporte_TipoVehiculo;
begin
ClrScr;
.a
gotoxy(21,2);
gotoxy(22,4);
gotoxy(2,6);
40
.a
dm
yc
on
tu
na
.m
fo
ro
s.
co
m
gotoxy(49,9);
writeln('CONTABILIZADOS');
gotoxy(2,10);
writeln('-----------------------------------------------------------------------------');
gotoxy(2,21);
write('-----------------------------------------------------------------------------');
gotoxy(2,22);
write('TOTAL DE VEHICULOS PROCESADOS:
');
gotoxy(2,24);
write('INTRODUZCA EL NOMBRE DE ALCABALA:
');
gotoxy(13,6);
end;
{-------------------------------------------------------------------------------------------------------------------------------}
{ Reporte de tipo de vehiculo }
procedure reporte_TipoVehiculo;
var
fila:integer;
begin
if arrayvacio=0 then
begin
dibujareporte_TipoVehiculo;
gotoxy(2,24);
write('INTRODUZCA EL NOMBRE DE ALCABALA:
');
gotoxy(13,6);
repeat
gotoxy(54,22);
write('
');
gotoxy(13,6);
readln(Alcabala);
val(Alcabala,valor,valido);
until (length(vehiculo[tt,3])>1) and (length(vehiculo[tt,3])<=40) and (vehiculo[tt,3]<>' ');
ordenararreglo;
fila:=8;
for j:=1 to 20 do
begin
if (vehiculo[j,1]<>'..') then
begin
fila:=fila+1;
if i>17 then
begin
fila:=fila+1;
end;
gotoxy(5,fila+1);
if vehiculo[j,5]='1' then write('Particulares');
if vehiculo[j,5]='2' then write('Puesto');
if vehiculo[j,5]='3' then write('Taxi');
if vehiculo[j,5]='4' then write('Transporte Publico');
gotoxy(20,fila+1);
write(vehiculo[j,1],' ');
gotoxy(34,fila+1);
write(vehiculo[j,1],' ');
gotoxy(54,fila+1);
write(vehiculo[j,2],' ');
end;
end;
gotoxy(2,24);
write('PULSE ENTER PARA SALIR
');
readln;
end;
end;
{-------------------------------------------------------------------------------------------------------------------------------}
{ Dibujar Menu Principal en pantalla y pedir opcion }
procedure MostrarMenu;
var
Op integer;
begin
repeat
ClrScr;
Gotoxy(1,1)dibujarRectan;
gotoxy(3,08);
41
dm
yc
on
tu
na
.m
fo
ro
s.
co
m
.a
{ Programa principal }
begin
cantidad:=0;
men;
end.(fin del programa)
42