Algoritmia - urgente

 
Vista:

urgente

Publicado por os (1 intervención) el 22/04/2009 18:07:11
me pueden ayudar a resolver esto es urgente ........Producir un reporte (papel) con los sueldos de los empleados de la compañía TECNOLATIN, S.A. dando subtotales por sucursal y departamento. El archivo maestro de nómina está en disco y cada empleado tiene un único registro con los siguientes datos:

Código del Empleado
Nombre del Empleado
Código de Sucursal
Código del departamento
Sueldo mensual

El archivo está clasificado por código de sucursal y dentro de sucursal por departamento, la primera sucursal es “001” y el primer departamento es “100”

Usted debe de leer hasta que nombre del empleado sea igual a “FIN”

Haga uso de dos subrutinas, una para imprimir el total por departamento y otra subrutina para el total por sucursal. Esto indica que debe utilizar dos variables para acumular los montos por departamento y por sucursal.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Generación de reporte de sueldos por sucursal y departamento

Publicado por Alejandro (307 intervenciones) el 13/03/2024 22:56:02
Para resolver este problema, podemos seguir estos pasos:

1. Leer el archivo maestro de nómina y procesar cada registro hasta que el nombre del empleado sea igual a "FIN".
2. Mantener un seguimiento de los totales por sucursal y por departamento mientras se procesan los registros.
3. Imprimir los subtotales por departamento y por sucursal al final del proceso.

Aquí tienes un ejemplo de cómo podrías implementar esto en Python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Definir subrutina para imprimir total por departamento
def imprimir_total_departamento(departamento, total):
    print(f"Total para el departamento {departamento}: {total}")
 
# Definir subrutina para imprimir total por sucursal
def imprimir_total_sucursal(sucursal, total):
    print(f"Total para la sucursal {sucursal}: {total}\n")
 
# Inicializar variables para los totales
total_departamento = 0
total_sucursal = 0
departamento_actual = None
sucursal_actual = None
 
# Leer el archivo maestro de nómina
with open('archivo_maestro_nomina.txt', 'r') as archivo:
    for linea in archivo:
        codigo_empleado, nombre_empleado, codigo_sucursal, codigo_departamento, sueldo = linea.strip().split(',')
 
        # Verificar si se ha llegado al final del archivo
        if nombre_empleado == "FIN":
            break
 
        # Verificar si hay un cambio de departamento
        if codigo_departamento != departamento_actual:
            if departamento_actual:
                imprimir_total_departamento(departamento_actual, total_departamento)
            total_departamento = 0
            departamento_actual = codigo_departamento
 
        # Verificar si hay un cambio de sucursal
        if codigo_sucursal != sucursal_actual:
            if sucursal_actual:
                imprimir_total_sucursal(sucursal_actual, total_sucursal)
            total_sucursal = 0
            sucursal_actual = codigo_sucursal
 
        # Acumular el sueldo en los totales
        total_departamento += float(sueldo)
        total_sucursal += float(sueldo)
 
# Imprimir el total del último departamento y sucursal
if departamento_actual:
    imprimir_total_departamento(departamento_actual, total_departamento)
if sucursal_actual:
    imprimir_total_sucursal(sucursal_actual, total_sucursal)

En este ejemplo, se asume que el archivo maestro de nómina está en formato CSV y se llama 'archivo_maestro_nomina.txt'. Puedes ajustar el nombre del archivo según sea necesario. Además, asegúrate de que los datos en el archivo estén ordenados por código de sucursal y departamento.

Este código procesará los registros del archivo maestro de nómina, calculará los totales por departamento y por sucursal, e imprimirá los subtotales correspondientes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar