Programa en Pascal: Cálculo de Precios e IVA con Matrices, Ordenamiento y Búsqueda

Inglés5,31 KB

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.

Descargar

PDF Word HTML