Please enable / Bitte aktiviere JavaScript!
Veuillez activer / Por favor activa el Javascript![ ? ]
Este foro usa cookies
Este foro usa cookies para almacenar tu sesión de inicio si estás registrado, y de tu última visita si no lo estás. Las Cookies son un pequeños documento de texto almacenado en tu PC; las cookies de este foro sólo pueden ser usadas en el mismo y no suponen ninguna amenaza para tu seguridad. Estas Cookies también anotan los hilos que has leído y cuándo lo has hecho. Por favor, confirma si aceptas o declinas el uso de estas cookies.

Una cookie será almacenada en tu navegador a pesar de tu decisión para prevenir que este mensaje te vuelva a aparecer. Podrás cambiar la configuración de las cookies en cualquier momento siguiendo el enlace de la parte inferior.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Práctica 4
#1
Código PHP:
package p4;
import p4.Matrices;
import utilidades.Teclado;

public class 
ProcesarArrays {


    
// PRÁCTICA 4 EJERCICIO 1 ............................................................
    
public static void invertir(int a []){
        if(
a!=null){
            
int b[] = new int [a.length];
            
int j=a.length-1;
            for(
int i=0;i<a.length;i++){
                
b[j--]=a[i];
            }

            
System.out.print("La matriz inversa de (");
            for(
int i=0;i<a.length;i++){
                
System.out.print(a[i]+ " ");
            }
            
System.out.print(") es (");
            for(
int i=0;i<b.length;i++){
                
System.out.print(b[i]+ " ");
            }
            
System.out.println(")");
        }else 
System.out.println("El elemento de entrada es NULL");
        if(
a.length==0System.out.println("El elemento de entrada es de dimension 0");
    }

    
// PRÁCTICA 4 EJERCICIO 2..........................................................
    
public static int [] ordenar(int [] aboolean ascendente){
        
int b[]= new int [a.length];
        
int aux;
        if(
a==null) return null;
        for(
int g=0;g<a.length;g++){
            
b[g]=a[g];
        }
        if(
ascendente==true){
            for(
int i=0;i<b.length-1;i++){
                for(
int j=0;j<b.length-1-i;j++){
                    if(
b[j]>b[j+1]){
                        
aux=b[j];
                        
b[j]=b[j+1];
                        
b[j+1]=aux;
                    }
                }
            }
        }else{
            for(
int i=0;i<b.length-1;i++){
                for(
int j=0;j<b.length-1-i;j++){
                    if(
b[j]<b[j+1]){
                        
aux=b[j];
                        
b[j]=b[j+1];
                        
b[j+1]=aux;
                    }
                }
            }
        }
        return 
b;
    }
    
// PRÁCTICA 4 EJERCICIO 3.....................................................
    
public static boolean hayRepetidos(int a []){
        if(
a==null || a.length==1) return false;
        for(
int i=0;i<a.length;i++){
            for(
int j=i+1;j<a.length;j++){
                if(
a[i]==a[j]) return true;
            }
        }
        return 
false;
    }

    
// PRÁCTICA 4 EJERCICIO 4.......................................................
    
public static int cuentaOcurrencias(int [] aint k){
        if(
a.length==0) return 0;
        
int z=0;
        for(
int i=0;i<a.length;i++){
            if(
a[i]==kz++;
        }
        return 
z;

    }

    public static 
int [] eliminarK(int [] aint k){
        if(
a.length==0){
            
int b[]= new int [0];
            return 
b;
        }
        if(
== null) return null;
        
int b[]= new int [a.length-cuentaOcurrencias(a,k)];
        
int j=0;
        for(
int i=0;i<a.length;i++){
            if(
a[i]!=kb[j++]=a[i];
        }

        return 
b;    
    }    

    
// PRÁCTICA 4 EJERCICIO 5.................................................
    
public static int [] ordenarIndices (char [] s){
        if(
s==null) return null;
        if(
s.length == 0){
            
int b[]= new int[0];
            return 
b;
        }
        
char t[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z'};
        
int b[]    = new int [s.length];
        for(
int i=0;i<s.length;i++){
            for(
int j=0;j<t.length;j++){
                if(
s[i] == t[j]) b[i]=j;
            }
        }
        return 
b;
    }

    
// PRÁCTICA 4 EJERCICIO 6....................................................        
    
public static int [] busquedaBinaria (int [] aint clave){
        if(
a==null) return null;
        for(
int i=0;i<a.length-1;i++){
            if(
a[i]>a[i+1]) return null;
        }
        
int z cuentaOcurrencias(a,clave);
        if(
z==0) return null;
        
int b[]= new int [2];
        
//int contador=0;
        //boolean prim=true;
        
int bajo 0;
        
int alto a.length -1;
        
int medio;
        while (
bajo <= alto) {
            
medio = (bajo alto) / 2;
            if (
clave == a[medio]) { // se encontró
                
b[0]=medio;
                
b[1]=medio;
                if(
a[medio-1]== clave){
                    
b[0] = medio -1;
                    
b[1] = medio;
                }
                if(
a[medio+1]==clave){
                    
b[0]=medio;
                    
b[1]=medio+1;
                }
                
//System.out.println ("Está en " + medio);
                //break;
                
return b;
            }
            else if (
clave a[medio]){
                
alto medio 1;
            }
            else {
                
bajo medio 1;
            }
        }
        return 
b;
    }




    
// PRÁCTICA 4 EJERCICIO 7....................................................
    
public static int busquedaBinariaRecursiva(int [] aint clave){
        if(
a==null) return -1;
        for(
int i=0;i<a.length-1;i++){
            if(
a[i]>a[i+1]) return -1;//devuelve -1 si no está ordenada de menor a mayor
        
}
        
int z cuentaOcurrencias(a,clave);
        if(
z>1) return -1;//devuelve -1 si hay elementos repetidos
        
int bajo 0;
        
int alto a.length -1;
        
int medio,tmp;
        if(
bajo <= alto){

        }
        while (
bajo <= alto) {
            
medio = (bajo alto) / 2;
            if (
clave == a[medio]) { // se encontró
                //System.out.println ("Está en " + medio);
                //break;
                
return tmp;
            }
            else if (
clave a[medio]){
                
alto medio 1;
            }
            else {
                
bajo medio 1;
            }
        }


    }

    
// PRÁCTICA 4 EJERCICIO 8.....................................................
    /**
     * Devuelve un matriz resultado de haber eliminado la fila
     * n-ésima de la matriz m pasada como argumento.
     * @param m matriz
     * @param n número de fila 
     * @return matriz resultado de haber eliminado la fila
     *         n-ésima de la matriz m pasada como argumento.
     *            null si m no es matriz o no existe la fila.
     */
    
public static double [][] quitarFila(double [][] mint n){
        if(
Matrices.esMatriz(m)==false) return null;
        if(
n>=m.length || n<0) return null;
        
double b [][] = new double [m.length-1][m[0].length];
        if(
n==m.length-1){
            for(
int i=0;i<m.length-1;i++){
                for(
int j=0;j<m[i].length;j++){
                    
//System.out.println(i);
                    //System.out.println(j);
                    
b[i][j] = m[i][j];
                }
            }
        }else{
            
int h=0;
            for(
int i=0;i<m.length;i++){
                if(
!= n){
                    for(
int j=0;j<m[i].length;j++){
                        
b[h][j] = m[i][j];                        
                    }
                    
h++;
                }

            }
        }
        return 
b;
    }


    
// PRÁCTICA 4 EJERCICIO 9.....................................................
    /**
     * Devuelve un matriz resultado de haber eliminado la 
     * n-ésima columna de la matriz m pasada como argumento.
     * @param m matriz
     * @param n columna 
     * @return matriz resultado de haber eliminado la 
     *         n-ésima columna de la matriz m pasada como argumento..
     *            null si m no e matriz o no existe la columna.
     */
    
public static double [][] quitarCol(double [][] mint n){
        if(
Matrices.esMatriz(m)==false) return null;
        if(
n>=m.length || n<0) return null;
        
double b [][] = new double [m.length][m[0].length-1];
        
int h=0;
        if(
n==0){
            
//System.out.println("if 1º");
            
for(int i=0;i<m.length;i++){
                
h=0;
                for(
int j=1;j<m[i].length;j++){
                    
b[i][h++]=m[i][j];
                }
            }
        }else if(
n==m[0].length-1){
            
//System.out.println("if 2");
            
for(int i=0;i<m.length;i++){
                for(
int j=0;j<m[i].length-1;j++){
                    
b[i][j] = m[i][j];
                }
            }
        }else{
            
//h=0;
            //System.out.println("el else");
            
for(int i=0;i<m.length;i++){
                
h=0;
                for(
int j=0;j<m[i].length;j++){
                    if(
!= n){
                        
b[i][h++] = m[i][j];
                        
                    }
                }
            }
        }
        return 
b;
    }

    
// PRÁCTICA 4 EJERCICIO 10......................................................
    /**
     * Dado un determinante de orden n, se llama menor complementario del
     * elemento aij, al determinante de orden n-1 que resulta de suprimir
     * en el determinante dado la fila i-ésima y la columna j-ésima.
     * @param m determinante de orden n
     * @param i    índice de fila (aij)
     * @param j índice de columna (aij)
     * @return array de dos dimensiones con los elementos del menor complementario de m.
     *         null si m no es matriz o i y j no representan una fila y columna válidas.
     */
    
public static double [][] getMenorComplementario (double [][] mint iint j){
        if(
Matrices.esMatriz(m)==false) return null;
        return 
quitarFila(quitarCol(m,j),i);
    }
    public static 
void resultado(int a[], int b[]){
        for(
int v=0;v<a.length;v++){
            
System.out.print(a[v]+ " ");
        }
        
System.out.print("--a--> ");
        for (
int n=0;n<b.length;n++){
            
System.out.print(b[n]+ " ");
        }
        
System.out.println("");

    }
    public static 
void resultado(char a[], int b[]){
        for(
int v=0;v<a.length;v++){
            
System.out.print(a[v]+ " ");
        }
        
System.out.print("--a--> ");
        for (
int n=0;n<b.length;n++){
            
System.out.print(b[n]+ " ");
        }
        
System.out.println("");

    }


    public static 
void main(String[] args) {
        
int h[]={4,23,45,13,45,3,1};
        
int h2[] = {0,1,1,3,4,5,13,13,20,22,40,42,42,42,44};
        
char x[]= {'a','l','f','o','n','s','o'};
        
int op,s;
        do{
            
System.out.println("1. Invertir matriz");
            
System.out.println("2. Orden ascentende");
            
System.out.println("3. Orden descendente");
            
System.out.println("4. Elementos repetidos?");
            
System.out.println("5. Eliminar elemento");
            
System.out.println("6. Ordenar índices");
            
System.out.println("7. Búsqueda binaria");
            
System.out.println("8. salir");
            
op Teclado.readInt();
            switch (
op){
            case 
1:
                
System.out.println("Invertir matriz");
                
invertir(h);
                break;
            case 
2:
                
System.out.println("Orden ascendente:");
                
int j[]=ordenar(h,true);
                for(
int v=0;v<j.length;v++){
                    
System.out.print(h[v]+ " ");
                }
                
System.out.print("--a--> ");
                for (
int n=0;n<j.length;n++){
                    
System.out.print(j[n]+ " ");
                }
                
System.out.println("");
                break;
            case 
3:
                
System.out.println("Orden descendente");
                
int k[]=ordenar(h,false);
                
resultado(h,k);
                break;
            case 
4:
                
System.out.println("Elementos repetidos: "hayRepetidos(h));

                break;
            case 
5:
                
System.out.print("Elemento a eliminar: ");
                
Teclado.readInt();
                
resultado(h,eliminarK(h,s));
            case 
6:
                
System.out.println("Ordenar índices");
                
resultado(x,ordenarIndices(x));
            case 
7:
                
System.out.print("Introduce clave a buscar: ");
                
Teclado.readInt();
                
resultado(h2,busquedaBinaria(h2,s));
            }

        }while(
op<8);
    }



Código PHP:
package p4;

import java.text.DecimalFormat;

public class 
Matrices {

    
/**
     * Comprueba si un array de dos dimensiones es matriz.
     * m != null && m[i] != null para i= 0..m.length-1 && m[i].length = m.length, i = 0..length-1
     * @param m array bidimensional a comprobar
     * @return true si m es matriz, false si no lo es.
     */
    
public static boolean esMatriz(double [][] m){
        if (
== null){
            return 
false;
        }
        if (
m.length == 0){
            return 
true;
        }
        for (
int i 0m.lengthi++){
            if (
m[i] == null){
                return 
false;
            }
            if (
m[i].length != m[0].length){
                return 
false;
            }
        }
        return 
true;
    }
    
    
/**
     * Comprueba si un array de dos dimensiones es matriz cuadrada.
     * m es matriz && m.length == m[0].length
     * @param m array bidimensional a comprobar
     * @return true si m es matriz cuadrada, false si no lo es.
     */
    
public static boolean esMatrizCuadrada(double [][] m){
        if (!
esMatriz(m)){
            return 
false;
        }
        if (
m.length == 0){
            return 
true;
        }
        if (
m.length == m[0].length){
            return 
true;
        }
        return 
false;
    }
    
    
/**
     * Devuelve la traspuesta de una matriz dada
     * @param m matriz
     * @return traspuesta de m
     *            null si m no es matriz.
     */
    
public static double [][] traspuesta(double [][] m){
        if (!
esMatriz(m)){
            
System.out.println("traspuesta: no es matriz: retorna null");
            return 
null;
        }
        
double [][] tr = new double[m[0].length][m.length];
        for (
int i 0tr.lengthi++){
            for (
int j 0tr[i].lengthj++){
                
tr[i][j] = m[j][i];
            }
        }
        return 
tr;
    }

    
/**
     * 
     * Para depuración.
     * 
     * Imprime en consola la matriz representada por m.
     * @param p polinomio.
     */
    
public static void printMatriz(double [][] m){
        if (!
esMatriz(m)){
            
System.out.println("no es matriz");
            return;
        }
        
        
// Representación de los números con dos decimales.
        
DecimalFormat form = new DecimalFormat();
        
form.setMaximumFractionDigits(2);
        
        
String [][] ms = new String[m.length][m[0].length];
        
        
// Por cada columna apuntamos el elemento que más ocupa para
        // ajustar la anchura de la columna en todas las filas.
        
int [] anchoCol = new int[m[0].length];
        for (
int i 0anchoCol.lengthi++){
            
anchoCol[i] = 0;
        }
        
        
// Obtenemos las representaciones de los números con dos decimales
        // y apuntamos los anchos de columna.
        
for (int i 0ms.lengthi++){
            for(
int j 0ms[i].lengthj++){
                
ms[i][j] = form.format(m[i][j]);
                if (
anchoCol[j] < ms[i][j].length()){
                    
anchoCol[j] = ms[i][j].length();
                }
            }
        }
        
        
// Reconstruimos los elementos de ms ajustando las columnas y añadiendo
        // blancos de separación entre columnas.
        
for (int i 0ms.lengthi++){
            for(
int j 0ms[i].lengthj++){
                
// Ajustar
                
while (ms[i][j].length() < anchoCol[j]){
                    
ms[i][j] = " " ms[i][j];
                }
                
// Añadir separación.
                
ms[i][j] = ms[i][j] + "  ";
            }
        }
        
        
// Imprimimos
        
for (int i 0ms.lengthi++){
            for (
int j 0ms[i].lengthj++){
                
System.out.print(ms[i][j]);    
            }
            
System.out.println();
        }
    }

    
/**
     * Compara dos arrays de double
     * @param m1 array 1
     * @param m2 array 2
     * @return true si son iguales elemento a elemento o si ambas referencias son null
     *         false en caso contrario.
     */
    
public static boolean compararMatrices(double [][] m1double [][] m2){
        
        if (
m1 == null && m2 == null){
            return 
true;
        }
        
 
       if (!esMatriz(m1) || !esMatriz(m2) ){
 
           return false;
 
       }

        if (
m1 == m2){
            return 
true;
        }
        
        if (
m1.length != m2.length){
            return 
false;
        }
        
        if (
m1[0].length != m2[0].length){
            return 
false;
        }

        for (
int i 0m1.lengthi++){
            for(
int j 0m1[i].lengthj++){
                if (
m1[i][j] != m2[i][j]){
                    return 
false;
                }
            }
        }
        return 
true;
    }
    
    
/**
     * 
     * Para depuración.
     * 
     * Imprime en consola los elementos de un array de doubles.
     * @param a array.
     */
    
public static void printArray(double [] a){
        if (
== null){
            
System.out.print("null");
            return;
        }
        
System.out.print("{");
        if (
a.length == 0){
            
System.out.print("}");
            return;
        }
        
        
DecimalFormat form = new DecimalFormat();
        
form.setMaximumFractionDigits(3);
        
        for (
int i 0a.length-1i++){
            
System.out.print(form.format(a[i]) + ", ");
        }
        
System.out.print(form.format(a[a.length-1]) + "}");
    }

    
/**
     * 
     * Para depuración.
     * 
     * Coloca en un array de Strings las filas de m.
     * @param m matriz.
     * @return array de Strings las filas de m.
     *         null si m no representa a una matriz.
     */
    
public static String [] matrizToStringArray(double [][] m){
        
        if (!
Matrices.esMatriz(m)){
            return 
null;
        }
        
        
String [] filas = new String[m.length];

        
// Representación de los números con dos decimales.
        
DecimalFormat form = new DecimalFormat();
        
form.setMaximumFractionDigits(3);
        
        
String [][] ms = new String[m.length][m[0].length];
        
        
// Por cada columna apuntamos el elemento que más ocupa para
        // ajustar la anchura de la columna en todas las filas.
        
int [] anchoCol = new int[m[0].length];
        for (
int i 0anchoCol.lengthi++){
            
anchoCol[i] = 0;
        }
        
        
// Obtenemos las representaciones de los números con dos decimales
        // y apuntamos los anchos de columna.
        
for (int i 0ms.lengthi++){
            for(
int j 0ms[i].lengthj++){
                
ms[i][j] = form.format(m[i][j]);
                if (
anchoCol[j] < ms[i][j].length()){
                    
anchoCol[j] = ms[i][j].length();
                }
            }
        }
        
        
// Reconstruimos los elementos de ms ajustando las columnas y añadiendo
        // blancos de separación entre columnas.
        
for (int i 0ms.lengthi++){
            for(
int j 0ms[i].lengthj++){
                
// Ajustar
                
while (ms[i][j].length() < anchoCol[j]){
                    
ms[i][j] = " " ms[i][j];
                }
                
// Añadir separación.
                
ms[i][j] = ms[i][j] + "  ";
            }
        }
        
        
// Copiamos;
        
for (int i 0ms.lengthi++){
            
StringBuffer sb = new StringBuffer();
            for (
int j 0ms[i].lengthj++){
                
sb.append(ms[i][j]);    
            }
            
filas[i] = sb.toString();
        }
        return 
filas;
    }
    
    public static 
void printTabla(String [][] ms){    
        
        
// Por cada columna apuntamos el elemento que más ocupa para
        // ajustar la anchura de la columna en todas las filas.
        
int [] anchoCol = new int[ms[0].length];
        for (
int i 0anchoCol.lengthi++){
            
anchoCol[i] = 0;
        }
        
        
// Obtenemos las representaciones de los números con dos decimales
        // y apuntamos los anchos de columna.
        
for (int i 0ms.lengthi++){
            for(
int j 0ms[i].lengthj++){
                if (
ms[i][j] == null){
                    
ms[i][j] = "null";
                }
                if (
anchoCol[j] < ms[i][j].length()){
                    
anchoCol[j] = ms[i][j].length();
                }
            }
        }
        
        
// Reconstruimos los elementos de ms ajustando las columnas y añadiendo
        // blancos de separación entre columnas.
        
for (int i 0ms.lengthi++){
            for(
int j 0ms[i].lengthj++){
                
// Ajustar
                
while (ms[i][j].length() < anchoCol[j]){
                    
ms[i][j] = ms[i][j] + " ";
                }
                
// Añadir separación.
                
ms[i][j] = ms[i][j] + "   ";
            }
        }
        
        
// Imprimimos
        
for (int i 0ms.lengthi++){
            for (
int j 0ms[i].lengthj++){
                
System.out.print(ms[i][j]);    
            }
            
System.out.println();
        }
    }


"Que yo sepa, el español medio no es más honrado que los políticos que lo gobiernan" Cool
Responder


Mensajes en este tema
Práctica 4 - por alfonso - 04-01-2016, 12:04
RE: Práctica 4 - por alfonso - 04-01-2016, 12:05

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)