Resultados 1 al 3 de 3

Tema: Problemas de lógica en el código

  1. #1
      Acabo de llegar...
    d

    Registrado
    noviembre de 2018
    Edad
    53
    Mensajes
    21
    Última visita
    Hoy a las 09:33

    Agradecimientos
     
    Recibidos
    8
    Enviados
    3

    Citaciones y menciones
     
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Question Problemas de lógica en el código

    Hola, pido ayuda a ustedes. Tengo este codigo de empleados de una empresa, todo esta bien lo que no logro es mostrar el sueldo menor.
    Salu2.
    NOTA: Codigo en OpenCobol

    COBOL Código:
    1.        IDENTIFICATION DIVISION.
    2.        PROGRAM-ID. empresa.
    3.  
    4.        DATA DIVISION.
    5.        FILE SECTION.
    6.        WORKING-STORAGE SECTION.
    7.        01  EMPRESA.
    8.            03 EMPLEADOS OCCURS 100 TIMES.
    9.               05 NOMBRE      PIC A(15).
    10.               05 SUELDO      PIC 9(6).
    11.               05 CATEGORIA   PIC 9.
    12.        77  WS-I      PIC 999 VALUE 1.
    13.        77  MAS-DATOS PIC A.
    14.        77  WS-J      PIC 999.
    15.        77  NOMBRE1   PIC A(15).
    16.        77  NOMBRE2   PIC A(15).
    17.  
    18.      * Contadores para la categorias
    19.        01  WS-A           PIC 999 VALUE 0.
    20.        01  WS-B           PIC 999 VALUE 0.
    21.        01  WS-C           PIC 999 VALUE 0.
    22.        01  WS-D           PIC 999 VALUE 0.
    23.      *Variables auxiliares
    24.        01  MAS-2000       PIC 999.
    25.        01  CAT1-MAS-1000  PIC 999.
    26.        01  MAYOR          PIC 9(6).
    27.        01  MENOR          PIC 9(6).
    28.  
    29.        PROCEDURE DIVISION.
    30.        MAIN-PROCEDURE.
    31.            PERFORM INGRESO-DATOS.
    32.            PERFORM EMPLEADOS-CATEGORIA.
    33.            PERFORM MAS-DE-2000.
    34.            PERFORM CATEGORIA-1-MAS-1000.
    35.            PERFORM SUELDO-MAYOR.
    36.            PERFORM SUELDO-MENOR.
    37.            STOP RUN.
    38.  
    39.        INGRESO-DATOS.
    40.            PERFORM UNTIL MAS-DATOS = 'N'
    41.                DISPLAY "Nombre del empleado: " NO ADVANCING
    42.                ACCEPT NOMBRE(WS-I)
    43.                DISPLAY "Sueldo del empleado: " NO ADVANCING
    44.                ACCEPT SUELDO(WS-I)
    45.                DISPLAY "Categoria (1-4): " NO ADVANCING
    46.                ACCEPT CATEGORIA(WS-I)
    47.                ADD 1 TO WS-I
    48.                DISPLAY " "
    49.                DISPLAY "Agregar otro empleado [S/N]: " NO ADVANCING
    50.                ACCEPT MAS-DATOS
    51.            END-PERFORM.
    52.      *
    53.        EMPLEADOS-CATEGORIA.
    54.            PERFORM VARYING WS-J FROM 1 BY 1 UNTIL WS-J > WS-I
    55.                EVALUATE CATEGORIA(WS-J)
    56.                    WHEN 1 ADD 1 TO WS-A
    57.                    WHEN 2 ADD 1 TO WS-B
    58.                    WHEN 3 ADD 1 TO WS-C
    59.                    WHEN 4 ADD 1 TO WS-D
    60.                END-EVALUATE
    61.            END-PERFORM.
    62.            DISPLAY " ".
    63.            DISPLAY "Empleados en categoria 1: " WS-A.
    64.            DISPLAY "Empleados en categoria 2: " WS-B.
    65.            DISPLAY "Empleados en categoria 3: " WS-C.
    66.            DISPLAY "Empleados en categoria 4: " WS-D.
    67.      *
    68.        MAS-DE-2000.
    69.            PERFORM VARYING WS-J FROM 1 BY 1 UNTIL WS-J > WS-I
    70.                IF SUELDO(WS-J) > 2000
    71.                    ADD 1 TO MAS-2000
    72.                END-IF
    73.            END-PERFORM.
    74.            DISPLAY " ".
    75.            DISPLAY "Empleados que cobran mas de 2000: " MAS-2000.
    76.  
    77.      * EMPLEADOS DE LA CATEGORIA 1 CON SUELDO MAYOR A $1000
    78.        CATEGORIA-1-MAS-1000.
    79.            PERFORM VARYING WS-J FROM 1 BY 1 UNTIL WS-J > WS-I
    80.                IF CATEGORIA(WS-J) = 1 AND SUELDO(WS-J) > 1000
    81.                    ADD 1 TO CAT1-MAS-1000
    82.                END-IF
    83.            END-PERFORM.
    84.            DISPLAY " ".
    85.            DISPLAY "Categoria 1 que cobran mas de 1000: " CAT1-MAS-1000.
    86.  
    87.      * CALCULO DEL SUELDO MAYOR
    88.        SUELDO-MAYOR.
    89.            MOVE 0 TO MAYOR.
    90.            PERFORM VARYING WS-J FROM 1 BY 1 UNTIL WS-J > WS-I
    91.                IF SUELDO(WS-J) > MAYOR
    92.                    MOVE SUELDO(WS-J) TO MAYOR
    93.                    MOVE NOMBRE(WS-J) TO NOMBRE1
    94.                END-IF
    95.            END-PERFORM.
    96.            DISPLAY " ".
    97.            DISPLAY "El empleado con mayor sueldo es: " NOMBRE1.
    98.            DISPLAY "Y su sueldo es: " MAYOR.
    99.  
    100.      * Calculo del sueldo menor
    101.        SUELDO-MENOR.
    102.            MOVE SUELDO(1) TO MENOR.
    103.            PERFORM VARYING WS-J FROM 2 BY 1 UNTIL WS-J > WS-I
    104.                IF SUELDO(WS-J) < MENOR
    105.                    MOVE SUELDO(WS-J) TO MENOR
    106.                    MOVE NOMBRE(WS-J) TO NOMBRE2
    107.                END-IF
    108.            END-PERFORM.
    109.            DISPLAY "El empleado con menor sueldo es: " NOMBRE2.
    110.            DISPLAY "El sueldo minimo es : " MENOR.

    0 Not allowed!

  2. #2
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    37
    Mensajes
    2,087
    Última visita
    Hoy a las 10:24

    Agradecimientos
     
    Recibidos
    908
    Enviados
    784

    Citaciones y menciones
     
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    12 Post(s)
    Poder de Reputación
    10

    Predeterminado

    @dariodr, yo creo que debes haces 2 cosas:
    1. Dar más detalles acerca de lo que no te sale. Lo de "no logco sacar saldo menor" no dice nada y obliga a que la gente estudie en detalle tu programa
    2. Pasar con el deburador (debugger)

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  3. #3
      Senior
    J

    Registrado
    junio de 2016
    Ubicación
    Albacete
    Edad
    56
    Mensajes
    316
    Última visita
    Hoy a las 01:08

    Agradecimientos
     
    Recibidos
    204
    Enviados
    116

    Citaciones y menciones
     
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    4 Post(s)
    Poder de Reputación
    24
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    Echando un vistazo por encima, creo que debes cambiar en todos los bucles
    COBOL Código:
    1. ...  UNTIL WS-J > WS-I

    por

    COBOL Código:
    1. ..... UNTIL WS-J = WS-I

    Ya que "WS-I" es el elemento del array no rellenado todavia.

    Y por consiguiente no te funcionaria ningun bucle, si alguno te funciona es porque el elemento "WS-I" evaluado está a cero y blanco y no te varia el resultado, pero en el "sueldo minimo" te saldra "cero" del trabajador " ".

    0 Not allowed!

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas Similares

  1. [Componente] Problemas con vbscript
    Por Fito en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 10
    Último Mensaje: 09.03.2022, 12:42
  2. [Compilador] Problemas con los *.SE/*.FD
    Por Socavi en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 8
    Último Mensaje: 23.08.2021, 23:47
  3. [Componente] Problemas Calendario
    Por Breew en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 9
    Último Mensaje: 24.04.2016, 13:32
  4. [Compilador] Problemas con el DEBUG
    Por Josber en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 3
    Último Mensaje: 12.04.2015, 22:16
  5. Problemas perdida licencia
    Por Kuk en el foro PowerFORM
    Respuestas: 0
    Último Mensaje: 03.02.2015, 16:21

Marcadores

Marcadores

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •