Alguien que me pueda ayudar con el siguiente ejercicio, esto de los arreglos aun no me queda muy claro.
Una fabrica tiene varios talleres y cada taller tiene varios
empleados, diseñar y codificar un algoritmo que lea los salarios por hora y las horas semanales trabajadas por cada empleado y que calcule e imprima el salario semanal de cada uno, la nomina de cada taller y la nomina total de la fabrica cada hora extra de un empleado se paga el doble de la hora normal.
***La clase principal la tengo en otra clase***
import java.util.Scanner;
public class fabrica {
int n, m, salario = 20, semanal, horas, h_extras, nomina, nominaFabrica;
int talleres[];
int empleados[];
public void leerDatos() {
Scanner read = new Scanner(System.in);
System.out.print("Ingrese el numero de talleres: ");
n = read.nextInt();
talleres = new int[n];
for (int i = 0; i < n; i++) {
System.out.print("\nIngrese el numero de empleados: ");
m = read.nextInt();
empleados = new int[m];
for (int j = 0; j < m; j++) {
System.out.print("Cuantas horas trabajo a la semana: ");
horas = read.nextInt();
System.out.print("Horas extras: ");
h_extras = read.nextInt();
semanal = (horas * salario) + (h_extras * 40);
System.out.println("Salario semanal: " + semanal + "\n");
}
nomina=nomina+semanal;
System.out.println("Nomina del taller " +nomina);
}
}
}
Saludos,
- Los Arrays multidimensionales tienen su complejidad y más si se trata de ir construyéndolos a medida de que avanza el programa ...
int[][][] fabrica;
^ ^ ^--------- datos del empleados, salario y horas
^ ^----------- empleados
^------------- talleres- Te recomiendo leer este e-book gratuito en español: Estructuras Básicas de Datos en Java (Array y String), en el él se explica la teoría de los Array, como funcionan y como se implementan. Cubre Arrays Unidimensionales y Multidimensionales:
http://jorgesanchez.net/manuales/viejos/fpr/fpr0509.pdf
- Te sugiero revisar este avance y complementarlo para acabar con tu ejercicio:
import java.util.Scanner;
public class Fabrica {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in);
int[][][] fabrica;
int nTalleres; // Una fabrica tiene n cantidad de talleres
int nEmpleados; // Un taller tiene una n cantidad de empreados
int salario; // salario por hora de un empleado
int horas; // horas trabajadas a la semana de un empleado
System.
out.
print( "\nIndique la cantidad de talleres: " ); nTalleres = scanner.nextInt();
fabrica = new int[nTalleres][][]; // fabrica tiene n cantidad de talleres
for ( int taller = 0; taller < nTalleres; taller++ ) {
System.
out.
print( "\n\tTaller: " + (taller
+ 1) ); System.
out.
print( "\n\tIndique la cantidad de empleados: " ); nEmpleados = scanner.nextInt();
fabrica[taller] = new int[nEmpleados][]; // taller tiene n cantidad de empleados
/** Llena Empleados */
for ( int empleado = 0; empleado < nEmpleados; empleado++ ) {
System.
out.
print( "\n\t\tEmpleado: " + (empleado
+ 1) ); System.
out.
print( "\n\t\tIndique el salario por hora: "); salario = scanner.nextInt();
System.
out.
print( "\t\tIndique la cantidad de horas trabajadas en la semana: "); horas = scanner.nextInt();
System.
out.
println( "\t\tTotal salario semanal: " + (salario
* horas
) ); fabrica[taller][empleado] = new int[2];
fabrica[taller][empleado][0] = salario;
fabrica[taller][empleado][1] = horas;
}
}
/** Muestra nonimas */
System.
out.
println( "\n..:: IMPRIMIENDO NOMINA ::.." ); for ( int taller = 0; taller < fabrica.length; taller++ ) {
System.
out.
println( "Taller " + (taller
+ 1) ); for ( int empleado = 0; empleado < fabrica[taller].length; empleado++ ) {
System.
out.
println( "\tEmpleado: " + (empleado
+ 1) ); System.
out.
println( "\t\tSueldo por hora: " + fabrica
[taller
][empleado
][0]); System.
out.
println( "\t\tHoras trabajas en la semana: " + fabrica
[taller
][empleado
][1]); }
}
}
}
C:\Users\EdSon\Desktop>javac Fabrica.java && java Fabrica
Indique la cantidad de talleres: 2
Taller: 1
Indique la cantidad de empleados: 2
Empleado: 1
Indique el salario por hora: 15
Indique la cantidad de horas trabajadas en la semana: 10
Total salario semanal: 150
Empleado: 2
Indique el salario por hora: 10
Indique la cantidad de horas trabajadas en la semana: 5
Total salario semanal: 50
Taller: 2
Indique la cantidad de empleados: 1
Empleado: 1
Indique el salario por hora: 20
Indique la cantidad de horas trabajadas en la semana: 8
Total salario semanal: 160
..:: IMPRIMIENDO NÓMINA ::..
Taller 1
Empleado: 1
Sueldo por hora: 15
Horas trabajas en la semana: 10
Empleado: 2
Sueldo por hora: 10
Horas trabajas en la semana: 5
Taller 2
Empleado: 1
Sueldo por hora: 20
Horas trabajas en la semana: 8
C:\Users\EdSon\Desktop>