Programa en Pascal: Cálculo de Precios e IVA con Matrices, Ordenamiento y Búsqueda
Programa Matrices_1B
A continuación se presenta un programa en Pascal para el cálculo de precios e IVA de nueve productos, utilizando una matriz bidimensional, con opciones para ingresar datos, ordenarlos, buscar productos y mostrar el listado.
Declaración del programa
Program Matrices_1B;
Uses
Crt;
Var
Opcion, SiNo : Char;
Matriz : Array [1..9,1..4] Of Real;
PC, NP, X, Y : Integer;
Hallados, Z : Integer;
PV, IVA, Temp : Real;
PrecioDeBusqueda: Real;Procedimiento Menu
Procedure Menu;
Begin
ClrScr;
GotoXY(26,3); Write('CALCULO DE PRECIOS E IVA');
GotoXY(26,4); Write('========================');
GotoXY(10,10); Write('1. Ingresar datos');
GotoXY(10,12); Write('2. Ordenar los datos');
GotoXY(10,14); Write('3. Buscar por Precio de venta');
GotoXY(10,16); Write('4. Mostrar los datos');
GotoXY(10,18); Write('5. Fin del programa');
GotoXY(10,22); Write('Seleccione (1-5):');
End;Procedimiento Buscar
Busca los productos cuyo precio de venta sea mayor al valor ingresado por el usuario.
Procedure Buscar;
Begin
ClrScr;
GotoXY(30,3); WriteLn('BUSQUEDA DE PRODUCTOS');
GotoXY(30,4); WriteLn('=====================');
WriteLn; WriteLn;
Write('Desde qué precio de venta busco: $');
ReadLn(PrecioDeBusqueda);
Hallados := 0; { Para contar el N.º de veces encontrado }
WriteLn;
WriteLn('N.º Prod P_Costo P_Venta Impuesto');
WriteLn('-----------------------------------------------');
For X := 1 To 9 Do
Begin
If Matriz[X,3] > PrecioDeBusqueda Then
Begin
Hallados := Hallados + 1;
Write(Matriz[X,1]:7:0, ' $', Matriz[X,2]:7:0);
Write(' $', Matriz[X,3]:7:0);
WriteLn(' $', Matriz[X,4]:8:0);
End;
End;
WriteLn;
If Hallados = 0 Then
WriteLn('¡¡ No existen valores mayores al ingresado !!')
Else
WriteLn('Productos encontrados: ', Hallados);
ReadKey;
End;Procedimiento Ordenar
Ordena la matriz de forma descendente según el precio de venta, previa confirmación del usuario.
Procedure Ordenar;
Begin
ClrScr;
GotoXY(29,3); WriteLn('ORDENAMIENTO DE DATOS');
GotoXY(29,4); WriteLn('=====================');
WriteLn; WriteLn;
Write('¿Estás seguro (S = Sí, N = No): ');
Repeat
GotoXY(33,7);
ReadLn(SiNo);
SiNo := UpCase(SiNo);
Until (SiNo = 'S') Or (SiNo = 'N');
If SiNo = 'S' Then
Begin
For X := 1 To 8 Do
Begin
For Z := X + 1 To 9 Do
Begin
If Matriz[X,3] < Matriz[Z,3] Then
Begin
For Y := 1 To 4 Do
Begin
Temp := Matriz[X,Y];
Matriz[X,Y] := Matriz[Z,Y];
Matriz[Z,Y] := Temp;
End;
End;
End;
End;
End;
WriteLn; WriteLn;
Write('Ordenamiento finalizado. Pulsa una tecla para seguir...');
ReadKey;
End;Procedimiento Mostrar
Procedure Mostrar;
Begin
ClrScr;
GotoXY(25,3); WriteLn('LISTADO DE PRODUCTOS DEL 2 AL 8');
GotoXY(25,4); WriteLn('===============================');
WriteLn; WriteLn;
WriteLn('N.º Prod P Costo P Venta Impuesto');
WriteLn('-----------------------------------------');
For X := 2 To 8 Do
Begin
Write(Matriz[X,1]:7:0, ' $', Matriz[X,2]:7:0);
WriteLn(' $', Matriz[X,3]:7:0, ' $', Matriz[X,4]:8:0);
End;
WriteLn('-----------------------------------------');
Write('Presione una tecla para continuar...');
ReadKey;
End;Procedimiento Ingresar
Solicita los datos de cada producto, calcula el precio de venta (costo × 1.95) y el IVA (19% del precio de venta).
Procedure Ingresar;
Begin
For X := 1 To 9 Do
Begin
ClrScr;
GotoXY(33,3); WriteLn('INGRESO DE DATOS');
GotoXY(33,4); WriteLn('================');
WriteLn; WriteLn; WriteLn;
WriteLn('Número de producto: ');
WriteLn('Precio de costo : $');
WriteLn('Precio de venta : $');
WriteLn('Impuesto (IVA) : $');
GotoXY(22,8); ReadLn(NP);
GotoXY(22,9); ReadLn(PC);
PV := PC * 1.95;
IVA := PV * 0.19;
GotoXY(22,10); Write(PV:7:0);
GotoXY(22,11); WriteLn(IVA:7:0);
Matriz[X,1] := NP;
Matriz[X,2] := PC;
Matriz[X,3] := PV;
Matriz[X,4] := IVA;
Write('Presione una tecla para continuar...');
ReadKey;
End;
End;Programa principal
Muestra el menú y ejecuta la opción seleccionada hasta que el usuario elija la opción 5 (Fin del programa).
Begin
Repeat
Menu;
Repeat
Opcion := ReadKey;
Until (Opcion > '0') And (Opcion <= '5');
Case Opcion Of
'1': Ingresar;
'2': Ordenar;
'3': Buscar;
'4': Mostrar;
End;
Until Opcion = '5';
End.