Documente Academic
Documente Profesional
Documente Cultură
1. se registrara la siguiente información por cada vehiculo: placa, número de pasajeros, alcabala, fecha, tipo
de vehiculo (1 para particulares, 2 para porpuesto, 3 para taxi, 4 para transporte públicos).
1. estadisticas por alcabalas: vehiculos que salen, vehiculos que entran por fechas. en cantidades y
porcentajes.
2. estadisticas por vehiculos: numeros de alcabala transitadas, dias transitados, promedio de pasajeros.
3. estadisticas por tipo de vehiculos: cantidad y porcentaje de vehiculos segun su tipo y por alacabals,
cantidad de pasajeros contabilizados por tipo de vehiculo.
con base de lo planteado, diseñe un algoritmo en pseudocódigo donde se muestre el uso correcto de técnicas
de programación estructurada o subprogramas y realice lo siguiente:
presente un menu de mantenimiento con las opciones siguientes: incluir, consultar, modificar, eliminar,
reporte de estadisticas y salida
nota: para este problema se tiene que idear unas subrutinas que permitan ordenar los datos por:
alcabala y fecha
placa del vehiculo
alcabala y tipo de vehiculo
"necesito ayuda con respecto a la resolución de este planteamiento es para un trabajo importante"
{Espero esto te sirva de ayuda}
program estadistica;
uses
crt;
const
tipove : array[1..4] of string[20] = (
'particulares','porpuesto','taxi','transporte publicos');
acion : array['A'..'B'] of string[5] = (
'Entra','Sale');
type
regvehiculo = record
nplaca : string[20];
npasaj : integer;
alcabala : string[20];
fecha : string[10];
tipovl : byte;
salent : char;
end;
var
datos : array[0..200] of regvehiculo;
cont : integer;
tecla : char;
procedure entrada_datos;
var
d : integer;
begin
writeln('***** Entrada De Datos Vehiculos *****');
writeln;
write(' Numero Placa : ');
readln(datos[cont].nplaca);
for d := 1 to length(datos[cont].nplaca) do
datos[cont].nplaca[d] := upcase(datos[cont].nplaca[d]);
write(' Numero Pasajeros : ');
readln(datos[cont].npasaj);
write(' Alcabala : ');
readln(datos[cont].alcabala);
write(' Fecha d/m/a : ');
readln(datos[cont].fecha);
writeln(' Tipo Vehiculo : 1=particulares 2=porpuesto 3=taxi',
' 4=transporte publicos');
write(' Tipo Veiculo : ');
readln(datos[cont].tipovl);
write(' Accion [A]=Sale [B]=entra : ');
readln(datos[cont].salent);
datos[cont].salent := upcase(datos[cont].salent);
cont := cont + 1;
if cont > 200 then
cont := 200;
end;
procedure consulta;
var
nume : string[20];
nn : integer;
enco : boolean;
begin
writeln(' ****** Consulta Entre Numero Matricula ******');
writeln;
write(' Numero : ');
readln(nume);
for nn := 1 to length(nume) do
nume[nn] := upcase(nume[nn]);
nn := 0;
enco := false;
repeat
if datos[nn].nplaca = nume then
enco := true
else
nn := nn + 1;
until (nn > cont - 1) or (enco = true);
if enco = true then
begin
clrscr;
writeln(' ***** Datos Consultados Son *****');
writeln;
writeln(' Numero Placa = ',datos[nn].nplaca);
writeln(' Numero Pasajeros = ',datos[nn].npasaj);
writeln(' Alcabala = ',datos[nn].alcabala);
writeln(' Fecha = ',datos[nn].fecha);
writeln(' Tipo Vehiculo = ',tipove[datos[nn].tipovl]);
writeln(' Sale/Entra = ',acion[datos[nn].salent]);
writeln;
writeln(' >>>>> Pulse Una Tecla <<<<<');
readkey;
end;
end;
procedure modifica;
var
termina, si : boolean;
pu, tec : char;
nn : integer;
num : string[20];
begin
if cont > 0 then
begin
writeln('***** Modificacion De Datos *****');
writeln;
write(' Entre Nume Matricula : ');
readln(num);
for nn := 1 to length(num) do
num[nn] := upcase(num[nn]);
nn := 0;
si := false;
termina := false;
repeat
if datos[nn].nplaca = num then
si := true
else
nn := nn + 1;
until (nn > cont) or (si = true);
if si = true then
begin
repeat
clrscr;
writeln('*** Elija Elemento A Modificar ***');
writeln;
writeln(' A = Numero Placa ');
writeln(' B = Numero Pasajeros');
writeln(' C = Alcabala ');
writeln(' D = Fecha');
writeln(' E = Tipo Vehiculo');
writeln(' F = Sale/Entra');
writeln(' S = Nada');
writeln;
repeat
tec := upcase(readkey);
until tec in['A','B','C','D','E','F','S'];
clrscr;
case tec of
'A' : begin write(' Numero Placa : '); readln(datos[nn].nplaca); end;
'B' : begin write(' Numero Pasajeros : '); readln(datos[nn].npasaj);
end;
'C' : begin write(' Alcabala : '); readln(datos[nn].alcabala); end;
'D' : begin write(' Fecha : '); readln(datos[nn].fecha); end;
'E' : begin write(' Tipo Vehiculo : '); readln(datos[nn].tipovl); end;
'F' : begin write(' Sale/Entra : '); readln(datos[nn].salent); end;
'S' : termina := true;
end;
if tec <> 'S' then
begin
writeln('** Desea Modificar Mas [S/N] **');
repeat
pu := upcase(readkey);
until pu in['S','N'];
if pu = 'N' then
termina := true;
end;
until termina = true;
end;
end
else
begin
writeln('<<<<<<< Sin Datos En Registro Pulse Una Tecla >>>>>>>>>');
readkey;
end;
end;
procedure ordena;
var
pu : char;
porque : string;
kk, nn : integer;
temp : regvehiculo;
begin
if cont > 2 then
begin
clrscr;
writeln(' **** Ordenar Registros Por ****');
writeln;
writeln(' 1 = Fecha y placa del vehiculo');
writeln(' 2 = Alcabala y fecha');
writeln(' 3 = Placa del vehiculo');
writeln(' 4 = alcabala y tipo de vehiculo');
writeln;
writeln(' <<<< Elija Opcion >>>>');
repeat
pu := readkey;
until pu in['1','2','3','4'];
if pu = '1' then
begin
for kk := 0 to cont do
for nn := cont downto kk + 1 do
begin
if (datos[kk].fecha > datos[nn].fecha) and
(datos[kk].nplaca > datos[nn].nplaca) then
begin
temp := datos[kk];
datos[kk] := datos[nn];
datos[nn] := temp;
end;
end;
end;
if pu = '2' then
begin
for kk := 0 to cont do
for nn := cont downto kk + 1 do
begin
if (datos[kk].alcabala > datos[nn].alcabala) and
(datos[kk].fecha > datos[nn].fecha) then
begin
temp := datos[kk];
datos[kk] := datos[nn];
datos[nn] := temp;
end;
end;
end;
if pu = '3' then
begin
for kk := 0 to cont do
for nn := cont downto kk + 1 do
begin
if (datos[kk].nplaca > datos[nn].nplaca) then
begin
temp := datos[kk];
datos[kk] := datos[nn];
datos[nn] := temp;
end;
end;
end;
if pu = '4' then
begin
for kk := 0 to cont do
for nn := cont downto kk + 1 do
begin
if (datos[kk].alcabala > datos[nn].alcabala) and
(datos[kk].tipovl > datos[nn].tipovl) then
begin
temp := datos[kk];
datos[kk] := datos[nn];
datos[nn] := temp;
end;
end;
end;
end
else
begin
writeln('<<<<<<< Sin Datos En Registro Pulse Una Tecla
>>>>>>>>>');
readkey;
end;
end;
procedure eliminaregistro;
var
tt, nn : integer;
reg : regvehiculo;
placa : string[20];
sal : boolean;
pul : char;
begin
if cont > 1 then
begin
writeln(' **** Eliminicain De Un Registro ****');
writeln;
write(' Entre Numero Placa : ');
readln(placa);
for nn := 1 to length(placa) do
placa[nn] := upcase(placa[nn]);
sal := false;
nn := 0;
repeat
if datos[nn].nplaca = placa then
sal := true
else
nn := nn + 1;
until (nn > cont - 1) or (sal = true);
if sal = true then
begin
writeln('???? Se Anulara El Registro Matricula =
',datos[nn].nplaca);
writeln('****** Desea Anularlo [S/N] *******');
repeat
pul := upcase(readkey);
until pul in['S','N'];
if pul = 'S' then
begin
for tt := 0 to cont - 1 do
begin
if tt <> nn then
datos[tt] := datos[tt];
end;
cont := tt;
end;
end;
end
else
begin
writeln('<<<<<<< Sin Datos En Registro Pulse Una Tecla
>>>>>>>>>');
readkey;
end;
end;
procedure visualizatodos;
var
paso, cc : integer;
begin
cc := 0;
paso := 1;
writeln('***** Las Datos Son *****');
writeln;
repeat
writeln(datos[cc].nplaca,' ',datos[cc].npasaj,' ',
datos[cc].alcabala,' ',datos[cc].fecha,' ',
datos[cc].tipovl,' ',datos[cc].salent);
paso := paso + 1;
cc := cc + 1;
if paso > 24 then
begin
writeln('***** Pulse Una Tecla Para Continuar ******');
readkey;
clrscr;
writeln('***** Las Datos Son *****');
writeln;
paso := 1;
end;
until cc > cont - 1;
writeln;
writeln('<<<<<< Fin De Presentacion Pulse Una Tecla >>>>>>');
readkey;
end;
procedure menu;
var
sal : boolean;
pul : char;
begin
sal := false;
repeat
clrscr;
writeln(' **** Menu Jeneral ****');
writeln;
writeln(' 1 = Incluir');
writeln(' 2 = Consultar');
writeln(' 3 = Modificar');
writeln(' 4 = Ordenar Por');
writeln(' 5 = Eliminar');
writeln(' 6 = Reporte de estadisticas');
writeln(' 7 = Salida');
writeln;
writeln(' *** Elija Opcion ***');
repeat
pul := readkey;
until pul in['1','2','3','4','5','6','7'];
clrscr;
case pul of
'1' : entrada_datos;
'2' : consulta;
'3' : modifica;
'4' : ordena;
'5' : eliminaregistro;
'6' : visualizatodos;
'7' : sal := true;
end;
until sal = true;
end;
begin
cont := 0;
menu;
end.