viernes, 14 de marzo de 2014

Unidad 3 Ejericio 26

Hacer un programa que esté asignando valores al azar comprendidos entre 1 y 50 a una matriz de orden 8 x 10 hasta que se cumpla que la matriz generada tenga al menos un punto de silla. Cuando se halla generado una matriz que tenga puntos de silla se ha de escribir en pantalla la matriz generada, el punto de silla junto con sus coordenadas y el número de matrices que segeneraron hasta que se encontró una con puntos de silla. A continuación se muestra un ejemplo de la salida del programa:






  /*
*26. Hacer un programa que esté asignando valores al azar comprendidos
* entre 1 y 50 a una matriz de orden 8 x 10 hasta que se cumpla que la matriz
* generada tenga al menos un punto de silla. Cuando se halla generado una matriz
* que tenga puntos de silla se ha de escribir en pantalla la matriz generada,
* el punto de silla junto con sus coordenadas y el número de matrices que se
* generaron hasta que se encontró una con puntos de silla.
* A continuación se muestra un ejemplo de la salida del programa:

39 29  9 11 35 36 10 13 15 26
33  5 16  6  5  9  1 35 30 50
14  4 50  6  8 16 31 15 41 29
39 18 15 21  4 45  5 28 50 28
  3  4 21 28 29 19 23 37 21 39
47 22 14  4 18 21 31 44 14 34
21  2  6 34 38 12 25 13 41 31
36 31 49 46 40 40 47 45 36 37

El elemento de valor 31 y situado en la fila 8 y la columna 2 es un punto de    silla.

el bucle se ha ejecutado 9477 veces
To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad3ejercicio26;

import java.util.Random;

/**
*
* @author Juan
*/
public class Unidad3Ejercicio26 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        int FIL =8;
        int COL = 10;
        int matriz[][] = new int [FIL][COL];
        Random aleatorio = new Random();
        int menorFila[]= new int [FIL];
        int mayorColumna[]= new int [COL];
        boolean silla=false;
        int contPruebas=0;
        int contf,contc;
     
do
{     
        for (int i = 0; i < FIL; i++) {
            for (int j = 0; j < COL; j++) {
                matriz[i][j]= aleatorio.nextInt(50)+1;
            }
        }
      
         for (int i = 0; i < FIL; i++) {
            menorFila[i]=matriz[i][0];
            for (int j = 0; j < COL; j++) {
                if(menorFila[i]>matriz[i][j]) menorFila[i]=matriz[i][j];
                if (i==0) mayorColumna[j]=matriz[i][j];
                    else if (mayorColumna[j]<matriz[i][j]) mayorColumna[j]=matriz[i][j];
            }
        }
         /*
          for (int i = 0; i < FIL; i++) {
            for (int j = 0; j < COL; j++) {
                System.out.printf(" %d",matriz[i][j]);
            }
            System.out.println();
        }
        *
        */
        
        contc=0;
        contf=0;
     
        while (!silla && contf < FIL ) {
            while (contc< COL && !silla) {
                if (matriz[contf][contc]==menorFila[contf] && matriz[contf][contc]==mayorColumna[contc]) silla=true;
                else ++contc;
            }
            if (!silla) ++contf;
        }
        ++contPruebas;
}
   while(!silla);  
        for (int i = 0; i < FIL; i++) {
            for (int j = 0; j < COL; j++) {
                System.out.printf(" %d",matriz[i][j]);
            }
            System.out.println();
        }
        if (silla) System.out.println("El valor silla del array es "+ menorFila[contf]+ " las coordenas ("+contf+","+contc+")"+ "\n Se han generado "+contPruebas+" para obtener la matriz: ");
        else System.out.println("No hay valor silla");

     
     
 
    }
 
    }