viernes, 27 de noviembre de 2015

Leer los datos correspondiente a dos tablas de 12 elementos numéricos, y mezclarlos en una tercera de la forma: 3 de la tabla A, 3 de la B, otros 3 de A, otros 3 de la B, etc

public class Main {
public static void main(String[] args) {
int a[], b[], c[];
int i,j;
a=new int[12];
b=new int[12];
// la tabla c tendrá que tener el doble de tamaño que a y b.
c = new int [24];
// leemos la tabla a
System.out.println("Leyendo la tabla a");
for (i=0;i<12;i++){
System.out.print("número: ");
a[i]=Entrada.entero();
}
// leemos la tabla b
System.out.println("Leyendo la tabla b");
for (i=0;i<12;i++){
System.out.print("número: ");
b[i]=Entrada.entero();
}
// asignaremos los elementos de la tabla c
// para las tablas a y b utilizaremos como índice i
// y para la tabla c utilizaremos como índice j.
j=0;
i=0;
Ejercicios de Programación en
while (i<12)
{
// copiamos 3 de a
for (int k=0;k<3; k++)
{
c[j]=a[i+k];
j++;
}
// copiamos 3 de b
for (int k=0;k<3;k++)
{
c[j]=b[i+k];
j++;
}
// como hemos copiado 3 de a y b, incrementamos la i en 3.
i+=3;
// la j se incrementa cada vez que se añade un elemento a la tabla c.
}
System.out.println("La tabla c queda: ");
for (j=0;j<24;j++) // seguimos utilizando j, para la tabla c. Aunque se podría utilizar i.
System.out.print(c[j]+" ");
System.out.println("");
}
}

4 comentarios:

  1. porque haces esto no lo comprendo c[j]=a[i+k];

    ResponderBorrar
    Respuestas
    1. Porque la c[j] evidentemente corresponde al valor que se le dará a v ahora, en a se pondrá el valor que corresponda a su posición en el arreglo, como de ve ahí el i tendrá un valor el cual es 0 al inicio y k tendrá otro valor que también es 0 al inicio, por ende 0+0 será igual a 0 y esto corresponde a la posición 0 del arreglo de a o sea de pondrá el primer número, luego como es un ciclo for la k aumenta con cada vuelta al ciclo y por consiguiente el siguiente valor de k corresponde a 1 y este sumado con el 0 de i dara de resultado 1 el cual será la segunda posición de a en su arreglo y esto se repite sucesivamente hasta que k sobrepase o llegue al límite especificado en el ciclo

      Borrar
  2. seria i<=9 porque en la primera vuelta i=0,en la segunda i=3,y en esas dos vueltas se llena 6 elementos del arreglo a y 6 de elemento en total 12, cómo son 24 elementos de 0 a 23,solo faltaría dos vueltas más para completar los 24 elementos por eso 9.

    ResponderBorrar
  3. tu código es muy bueno, pero le hace falta nombrar o importar el Scanner.
    Al igual la parte donde vas a imprimir en pantalla ese tiene que ir dentro del while y el salto de linea a fuera de ella. Pero hay en fuera, todo esta bien, solo es corregir esos detalles.

    public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    int a[] = new int[12];
    int b[] = new int[12];
    int c[] = new int[24]; //la tabla c tendra 24 elementos

    //leemos el arreglo a
    System.out.println("Digitamos el primer arreglo");
    for(int i=0;i<12;i++){
    System.out.print((i+1)+". Digite un numero: ");
    a[i] = entrada.nextInt();
    }
    //leemos el arreglo b
    System.out.println("\nDigitamos el segundo arreglo");
    for(int i=0;i<12;i++){
    System.out.print((i+1)+". Digite un numero: ");
    b[i] = entrada.nextInt();
    }
    //mezclamos los dos arreglos en el arreglo c
    //vamos a usar el iterador i para a y b
    //y el iterador j para el arreglo c
    int i=0;
    int j=0;
    while(i<12){
    //copiamos 3 del arreglo a
    for(int k=0;k<3;k++){
    c[j] = a[i+k];
    j++;
    }
    //copiamos 3 del arreglo b
    for(int k=0;k<12;k++){
    c[j] = b[i+k];
    j++;
    }
    //como copiamos 3 de a y 3 de b, incrementos la interacion i en 3
    i+=3;
    //la j se incrementa cada vez que se añade un elemento al arreglo c
    System.out.println("\nEl arreglo c queda: ");
    for(i=0;i<24;i++){ //seguimos usando j, para la tabla c
    System.out.print(c[i]+" ");
    }
    System.out.println("");
    }
    }

    ResponderBorrar

Es muy importante tu comentarios: