ARREGLOS

Iniciado por padiuwu, 6 Febrero 2019, 05:53 AM

0 Miembros y 1 Visitante están viendo este tema.

padiuwu

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);
       }

   }

}

EdePC

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:

Código (java) [Seleccionar]
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>