Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program TP5_Punto1;
- uses
- crt;
- type
- cadena=string[30];
- TRegistro=Record
- serie:integer;
- marca:cadena;
- modelo:cadena;
- precio:real;
- procesador:real;
- camPrincipal:integer;
- camFrontal:integer;
- display:real;
- resDisplay:integer;
- memInterna:integer;
- memExterna:integer;
- SO:cadena;
- bateria:integer;
- estado:cadena;
- end;
- TVector=array[1..100] of TRegistro;
- var
- registro:TRegistro;
- vector:TVector;
- n,opc:integer;
- procedure cargarRegistro(var registro:TRegistro);
- begin
- with registro do
- begin
- ClrScr();
- Write('Num. de serie: '); ReadLn(serie);
- Write('Marca: '); ReadLn(marca);
- Write('Modelo: '); ReadLn(modelo);
- Write('Precio: $'); ReadLn(precio);
- Write('Procesador: '); ReadLn(procesador);
- Write('Res. Cam. Principal: '); ReadLn(camPrincipal);
- Write('Res. Cam. Frontal: '); ReadLn(camFrontal);
- Write('Tamanio Dislay: '); ReadLn(display);
- Write('Resolusion del display: '); ReadLn(resDisplay);
- Write('Memoria interna: '); ReadLn(memInterna);
- Write('Memoria externa Maxima: '); ReadLn(memExterna);
- Write('Sistema Operativo: '); ReadLn(SO);
- Write('Capacidad de bateria: '); ReadLn(bateria);
- Write('Estado: '); ReadLn(estado);
- end;
- end;
- procedure cargarVector(var vector: TVector;var n:integer);
- var
- i:integer;
- begin
- Clrscr();
- Write('Cantidad de equipos: ');
- ReadLn(n);
- for i:=1 to n do
- begin
- cargarRegistro(vector[i]);
- end;
- end;
- procedure mostrarRegistro(registro:TRegistro);
- begin
- with registro do
- begin
- WriteLn('Num. de serie: ',serie);
- WriteLn('Marca: ',marca);
- WriteLn('Modelo: ',modelo);
- WriteLn('Precio: $',precio:2:2);
- WriteLn('Procesador: ',procesador:2:2);
- WriteLn('Resolusion camara principal: ',camPrincipal);
- WriteLn('Resolusion camara frontal: ',camFrontal);
- WriteLn('Tamanio display: ',display:2:2);
- WriteLn('Resolusion display: ',resDisplay);
- WriteLn('Memoria interna: ',memInterna,'Gb');
- WriteLn('Memoria externa maxima: ',memExterna,'Gb');
- WriteLn('Sistema Operativo: ',SO);
- WriteLn('Capacidad de bateria: ',bateria,' mA');
- WriteLn('Estado del telefono: ',estado);
- end;
- end;
- procedure mostrarVector(vector: TVector; n: Integer);
- var
- i: integer;
- begin
- for i:=1 to n do
- begin
- mostrarRegistro(vector[i]);
- WriteLn();
- end;
- ReadKey();
- end;
- procedure selectionSortxResCamPrincipal( var aux:Tvector; n:integer);
- var
- i,k,j:integer;
- y:TRegistro;
- Begin
- For I := 1 To N - 1 Do
- Begin
- K := I;
- y := aux[I];
- For J := (I + 1) To N Do
- If (aux[J].camPrincipal < y.camPrincipal) Then //es ordenado por el campo resolusion camara principal
- Begin
- K := J;
- Y := aux[J];
- End;
- aux[K] := aux[I];
- aux[I] := Y;
- End;
- end;
- procedure porResCamPrincipal(vector:TVector; n:integer); // Mostrar los equipos con resolución de cámara principal mayor o igual a un valor dado
- var
- aux:TVector;
- resolusion,i:integer;
- band:boolean;
- begin
- Clrscr();
- aux:=vector;
- selectionSortxResCamPrincipal(aux,n);
- WriteLn('Indicar resolusion de camara principal');
- ReadLn(resolusion);
- band:=true;
- for i:=1 to n do
- begin
- if(aux[i].camPrincipal>=resolusion)then
- begin
- mostrarRegistro(aux[i]);
- band:=false;
- WriteLn();
- end;
- end;
- if band then
- begin
- WriteLn('No hay ningun equipo con las especificaciones dadas');
- end;
- ReadKey();
- end;
- procedure selectionSortxPrecio(var aux:Tvector;n:integer);
- var
- i,k,j:integer;
- y:TRegistro;
- Begin
- For I := 1 To N - 1 Do
- Begin
- K := I;
- y := aux[I];
- For J := (I + 1) To N Do
- If (aux[J].precio < y.precio) Then //es ordenado por el campo precio.
- Begin
- K := J;
- Y := aux[J];
- End;
- aux[K] := aux[I];
- aux[I] := Y;
- End;
- end;
- procedure selectionSortxModelo(var aux:Tvector;n:integer);
- var
- i,k,j:integer;
- y:TRegistro; //es del tipo del registro.
- Begin
- For I := 1 To N - 1 Do
- Begin
- K := I;
- y := aux[I];
- For J := (I + 1) To N Do
- If (aux[J].modelo < y.modelo) Then //es ordenado por el campo modelo.
- Begin
- K := J;
- Y := aux[J];
- End;
- aux[K] := aux[I];
- aux[I] := Y;
- End;
- end;
- procedure porIntervalodePrecio(vector:TVector; n:integer); //Mostrar los equipos cuyo precio se encuentre dentro de un intervalo mínimo y máximo dados.
- var
- aux:TVector;
- i:integer;
- band:boolean;
- minimo, maximo:real;
- begin
- Clrscr();
- aux:=vector;
- selectionSortxPrecio(aux,n);
- Write('Precio Minimo: $');
- ReadLn(minimo);
- Write('Precio Maximo: $');
- ReadLn(maximo);
- ClrScr();
- band:=true;
- for i:=1 to n do
- begin
- if(aux[i].precio>=minimo)and(aux[i].precio<=maximo)then
- begin
- mostrarRegistro(aux[i]);
- band:=false;
- WriteLn();
- end;
- end;
- if band then
- begin
- WriteLn('No hay ningun equipo dentro del intervalo especificado');
- end;
- ReadKey();
- end;
- procedure MarcaDadaxPrecio(vector:TVector; n:integer);
- var
- marcaDada:cadena;
- aux:TVector;
- i,tamAux:integer;
- begin
- Clrscr();
- Write('Ingrese Marca de celular: ');
- ReadLn(marcaDada);
- tamAux:=0;
- for i:=1 to n do
- begin
- if (vector[i].marca=marcaDada) then
- begin
- tamAux:=tamAux+1;
- aux[tamAux]:=vector[i];
- end;
- end;
- if (tamAux=0) then
- begin
- WriteLn('La marca de celular que ingreso no esta disponible');
- ReadKey();
- end
- else
- begin
- selectionSortxPrecio(aux,tamAux);
- end;
- mostrarVector(aux,tamAux);
- end;
- procedure MarcaDadaxModelo(vector:TVector; n:integer);
- var
- marcaDada:cadena;
- aux:TVector;
- i,tamAux:integer;
- begin
- Clrscr();
- Write('Ingrese Marca de celular: ');
- ReadLn(marcaDada);
- tamAux:=0;
- for i:=1 to n do
- begin
- if (vector[i].marca=marcaDada) then
- begin
- tamAux:=tamAux+1;
- aux[tamAux]:=vector[i];
- end;
- end;
- if (tamAux=0) then
- begin
- WriteLn('La marca de celular que ingreso no esta disponible');
- ReadKey();
- end
- else
- begin
- selectionSortxModelo(aux,tamAux);
- end;
- mostrarVector(aux,tamAux);
- end;
- function Binaria(vector:tVector; n:integer; k:integer):integer;
- var
- i,j,m :integer;
- encontrado :boolean;
- begin
- encontrado:=false;
- i:=1;
- j:=n;
- while (Not encontrado) and (i <= j) do
- begin
- m:=(i + j) div 2;
- if vector[m].serie = k then
- encontrado:=true
- else
- if k > vector[m].serie then
- i:= m + 1
- else
- j:= m - 1;
- end;
- if Not encontrado then
- m:=0;
- Binaria:= m;
- end; {fin Binaria}
- procedure Quick_Sort(primero,ultimo:integer; var vector:tVector); //ordena por serie
- var
- i,j,m, pivote: integer;
- aux:TRegistro;
- begin
- i:=primero;
- j:=ultimo;
- m:=(primero + ultimo) div 2;
- pivote:=vector[m].serie;
- repeat
- while vector[i].serie < pivote do
- inc(i);
- while vector[j].serie > pivote do
- dec(j);
- if i<=j then
- begin
- aux:=vector[i];
- vector[i]:=vector[j];
- vector[j]:=aux;
- inc(i);
- dec(j);
- end;
- until i > j;
- if primero < j then
- Quick_Sort(primero,j,vector);
- if ultimo > i then
- Quick_Sort(i,ultimo,vector);
- end; {fin Quick_Sort}
- procedure venderEquipo(var vector:TVector; n:integer); //Vender un equipo. Consiste en cambiar el estado de “En Stock” a “Vendido” y sólo podrá realizarse en caso de que el equipo este en stock, en caso contrario debe mostrarse un mensaje de error.
- var
- serie, pos:integer;
- begin
- Clrscr();
- Write('Ingrese Numero de serie de equipo a vender: ');
- ReadLn(serie);
- Quick_Sort(1,n,vector);
- pos:= Binaria(vector,n,serie);
- if (vector[pos].estado='en stock')or(vector[pos].estado='EN STOCK') then
- begin
- vector[pos].estado:='Vendido';
- WriteLn('Operacion exitosa. El Equipo fue vendido');
- ReadKey();
- end
- else
- begin
- WriteLn('ERROR: El equipo no esta disponible.');
- ReadKey();
- end;
- end;
- procedure menu(var opc:integer);
- begin
- WriteLn('Seleccione una opcion');
- WriteLn('1: Cargar Vector');
- WriteLn('2: Mostrar Vector');
- WriteLn('3: Mostrar por resolusion');
- WriteLn('4: Mostrar por intervalo de precio');
- WriteLn('5: Vender equipo');
- WriteLn('6: Dada una marca ordenar por modelo');
- WriteLn('7: Dada una marca ordenar por precio');
- WriteLn('0: Salir');
- ReadLn(opc);
- end;
- begin //principal
- repeat
- ClrScr();
- menu(opc);
- case opc of
- 0: WriteLn('terminado');
- 1: cargarVector(vector,n);
- 2: mostrarVector(vector,n);
- 3: porResCamPrincipal(vector,n);
- 4: porIntervalodePrecio(vector,n);
- 5: venderEquipo(vector,n);
- 6: MarcaDadaxPrecio(vector,n);
- 7: MarcaDadaxModelo(vector,n);
- else
- writeln('Opcion invalida..');
- end;
- until opc = 0;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement