Mostrando entradas con la etiqueta return. Mostrar todas las entradas
Mostrando entradas con la etiqueta return. Mostrar todas las entradas

lunes, 30 de enero de 2017

Matrices: Suma los elementos de cada fila

Crea una función "generaArrayAleatorio" que reciba como parámetros el ancho y el largo de una matriz y éste deberá generarla con números aleatorios comprendidos entre el 1 y el 10.
Crea otra función "muestraArray" que reciba como parámetro un array bidimensional de números enteros y lo muestre por pantalla, con la salvedad
de que al final de cada fila deberá aparecer la suma de los elementos de dicha fila. Desde la función principal tendrás que hacer una llamada a la función "generaArrayAleatorio" para generar el array bidimensional y otra llamada
a "muestraArray" para mostrar el array con la suma de las filas al final.


Ejemplo:
  2  7  1 10  7  1  3  1  1  6 -->  39
 10  4  7  7  3  5  6 10 10  1 -->  63
  1  8  3  4  3 10  3  4  5  9 -->  50
  6  4  1  2  4  8  9  3  6  3 -->  46
  2  5  8  4  3  1  3  5  8  1 -->  40
  9  3  5  6  5  6  7 10  2  9 -->  62
  4  9  4  1 10  4  4  7  9  1 -->  53
  5  3  9  9  2 10  5  4  9  7 -->  63
  2  4  5  9  5  6 10  1  3  4 -->  49
  4  1  2  3  3  4  1  4  1  8 -->  31


SOLUCIÓN EN JAVA:

package sumafilasarrays;

public class SumaFilasArrays {

    //Genero un array bidimensional del tamaña que indican como parámetro las filas y las columnas
    //de números aleatorios entre 1 y 10
    static int[][] generaArrayAleatorio(int filas, int columnas){
        int[][] matriz=new int[filas][columnas];
        int i,j;
        
        for (i=0 ; i < matriz.length ; i++){
            for (j=0 ; j < matriz[i].length ; j++){
                matriz[i][j] = (int)(Math.random()*10+1);
            }
        }
        return matriz;
    }
    
    //Muestro el array bidimensional que pasan como parámetro e imprimo línea por línea
    //y al finalizar cada línea muestra la suma de dicha línea, utilizo para ello una 
    //variable que va sumando los elementos de la fila "sumaFila"
    static void muestraArray(int[][] matriz){
        int i,j,sumaFila=0;
        
        for (i=0; i < matriz.length ; i++){
            for (j=0 ; j < matriz[i].length ; j++){
                sumaFila+=matriz[i][j];
                System.out.printf("%3d", matriz[i][j]);
            }
            System.out.printf(" --> %3d\n",sumaFila);
            sumaFila=0;
        }
    }
    
    //Desde la función principal sólo tengo que hacer una llamada para generar el array
    //y otra para mostrarlo por pantalla
    public static void main(String[] args) {
        int[][] matriz;
        
        matriz=generaArrayAleatorio(10,10);
        muestraArray(matriz);
    }
}

miércoles, 25 de enero de 2017

Matrices: Crea una matriz en la que cada casilla sea la suma de su fila y su columna

Haz una función "generaMatriz" que cree una matriz del tamaño que se le pase como parámetro y, a continuación rellene cada casilla para que sea la suma de su posición (fila+columna).
  • matriz[fila][columna]=fila+columna
Crea otra función "imprimeMatriz" para imprimir por pantalla dicha matriz.

Desde la función principal:
  • LLama a la función "generaMatriz" para crear una matriz de 10x10
  • Llama a la función "imprimeMatriz" para mostrarla por pantalla


Ejemplo:
   0   1   2   3   4   5   6   7   8   9
   1   2   3   4   5   6   7   8   9  10
   2   3   4   5   6   7   8   9  10  11
   3   4   5   6   7   8   9  10  11  12
   4   5   6   7   8   9  10  11  12  13
   5   6   7   8   9  10  11  12  13  14
   6   7   8   9  10  11  12  13  14  15
   7   8   9  10  11  12  13  14  15  16
   8   9  10  11  12  13  14  15  16  17
   9  10  11  12  13  14  15  16  17  18


SOLUCIÓN EN JAVA:
package sumaposicionesarray;

public class SumaPosicionesArray {

    //Con esta función creo la matriz de tantas filas y columnas como me indiquen 
    //en los parámetros. Y a continuación pongo en cada casilla de dicha matriz el
    //resultado de sumar el número de fila y el número de columna en la que está.
    static int[][] generaMatriz(int filas, int columnas){
        int[][] matriz=new int[filas][columnas];
        int f,c;
        
        for(f=0 ; f < matriz.length ; f++){
            for (c=0 ; c < matriz[f].length ; c++){
                matriz[f][c]=f+c;
            }
        }
        return matriz;
    }
    
    //Con esta función hacemos un recorrido por la matriz para mostrar todas sus
    //casillas, utilizo la salida con formato "%4d" para que todos los valores salgan
    //tabulados con un ancho de 4 carácteres.
    static void imprimeMatriz(int[][] matriz){
        int filas, columnas;
        
        for (filas=0 ; filas < matriz.length ; filas++){
            for (columnas=0 ; columnas < matriz[filas].length ; columnas++){
                System.out.printf("%4d", matriz[columnas][filas]);
            }
            System.out.println();
        }
    }
    
    //Desde la función principal sólo tengo que hacer dos llamadas a las 
    //funciones creadas arriba para mostrar por pantalla la matriz generada
    public static void main(String[] args) {
        int[][] matriz;
        
        matriz=generaMatriz(10,10);
        imprimeMatriz(matriz);   
    }
}

martes, 24 de enero de 2017

Arrays: Buscar siguiente elemento


Crea una función "buscarSiguiente" que reciba tres parámetros:
  • un array de números enteros
  • una posición dentro del array
  • el número que se desea buscar en el array a partir de dicha posición
La función devolverá:
  • un número que indicará la posición del número que se busca, si es que está a partir de la posición dada
  • un -1 si no lo encuentra a partir de la posición dada
Desde la función principal tendrás que crear un array de 20 números enteros aleatorios entre 1 y 10, pedir al usuario un número del 1 al 10 y mostrar en la pantalla las posiciones dentro del array que ocupa dicho número utilizando llamadas sucesivas a la función creada.
Ejemplo:
Introduzca un número del 1 al 10:
> 5

Dentro del array :[1, 9, 6, 9, 9, 3, 6, 1, 8, 9, 5, 8, 2, 5, 2, 1, 8, 9, 6, 10]
El número 5 está en las siguientes posiciones:
Posición: 10
Posición: 13


SOLUCIÓN EN JAVA:
package buscararray;

import java.util.Arrays;
import javax.swing.JOptionPane;

public class BuscarArray {

    static int buscarSiguiente(int[] vector, int posicion, int numero){
        int i;
        boolean encontrado=false;
        
        //Recorro el array a partir de la posición que me indican en el parámetro
        //y me detengo cuanto he encontrado el número buscado
        //o cuando llego al final del array
        //Devolveré la posición del número buscado si es que está o
        //-1 para indicar que no se ha encontrado dicho número
        for (i=posicion ; encontrado==false && i < vector.length; i++){
            if (vector[i]==numero)
                encontrado=true;                        
        }
        if (encontrado)
            return i;
        else
            return -1;
    }
    public static void main(String[] args) {
       int[] vector=new int[20];
       int posicion=0;
       int numero=0;//Este es el número que se desea buscar
       
       for (int i=0;i < vector.length;i++){
           vector[i]=(int)(Math.random()*10+1);
       }
       try {
           numero=Integer.parseInt(JOptionPane.showInputDialog("Introduzca número a buscar"));
       } catch (NumberFormatException e){
           JOptionPane.showMessageDialog(null, "Error de formato");
           System.exit(0);
       }
       System.out.println("Dentro del array :"+Arrays.toString(vector));
       System.out.println("El número "+numero+" está en las siguientes posiciones:");
       do{
           posicion=buscarSiguiente(vector,posicion,numero);
           if (posicion!=-1)
           System.out.println("Posición: "+(posicion-1));
       } while (posicion!=-1);
    }
    
}

sábado, 21 de enero de 2017

Arrays: Separar pares e impares

Crea un array de 10 elementos con números aleatorios del 1 al 100 y muéstralo por pantalla.
Ahora tendrás que llamar a una función "separaParesImpares" que devolverá otro array ordenado de la siguiente forma: primero aparecerán todos los pares y después todos los impares. Finalmente muestra el array ordenado por pantalla.


Ejemplo:
Array Inicial:
5, 9, 18, 50, 49, 67, 2, 99, 97, 20

Array Ordenado:
18, 50, 2, 20, 5, 9, 49, 67, 99, 97


SOLUCIÓN EN JAVA:
package paresimpares;

import java.util.Arrays;

public class ParesImpares {

    static int[] separaParesImpares(int[] lista){
        int[] nuevo=new int[lista.length];
        int i, posicionNuevoIzq=0, posicionNuevoDer=lista.length-1;
        
        //Hago un recorrido para colocar primero los pares en el nuevo array
        //y al final del array los impares
        for (i=0;i < lista.length;i++){
            if (lista[i]%2==0){
                nuevo[posicionNuevoIzq]=lista[i];
                posicionNuevoIzq++;
            } else {
                nuevo[posicionNuevoDer]=lista[i];
                posicionNuevoDer--;
            }                
        }
        return nuevo;
    }
    
    public static void main(String[] args) {
        int[] elementos=new int[10];
        int i;
        
        //Genero el array con números aleatorios del 1 al 100
        for (i=0;i < elementos.length;i++){
            elementos[i]=(int)(Math.random()*100+1);
        }
        System.out.println("Array antes de ordenar pares e impares: "+Arrays.toString(elementos));
        //Hago la llamada a la función que separa pares e impares y el resultado lo guardo
        //en el mismo array
        elementos=separaParesImpares(elementos);
        System.out.println("Array después de ordenar pares e impares: "+Arrays.toString(elementos));        
    }
}

miércoles, 18 de enero de 2017

Arrays: Calcula el Máximo Común Divisor de una array de números enteros

Crea una función que reciba como parámetro un array de números enteros y devuelva el máximo común divisor de todos los números que contiene.
Desde la función principal tendrás que crear un array e introducir a mano los números de los que queremos calcular el máximo común divisor, y a continuación tendrás que hacer una llamada a la función creada para finalmente imprimir por pantalla el resultado.


Ejemplo:
Lista de numeros:[12, 6, 18, 24]
Máximo cómun divisor: 6

Lista de numeros:[4, 8, 30, 124]
Máximo cómun divisor: 2


SOLUCIÓN EN JAVA:
package mdc_arrays;

import java.util.Arrays;

public class MDC_Arrays {

    static int mcd(int[] lista){
        int i,menor;
        boolean no_es_mcd=false,probar_siguiente=true;
        
        //Primero obtengo el menor número del array porque empezaremos
        //a probar a dividir por él hacia abajo
        menor=lista[0];
        for (i=1;i < lista.length;i++){
            if (lista[i] < menor){
                menor=lista[i];
            }
        }
        //Ya tengo en la variable "menor" el menor número del array
        
        
        while (probar_siguiente==true){     
            //Ahora tengo que comprobar si "menor" es divisible por todos los números del array
            for (i=0;i < lista.length && no_es_mcd==false;i++){
                if (lista[i]%menor!=0)
                    no_es_mcd=true;
            }
            //Si no lo es, tendré que probar con el siguiente número, que será menor-1
            if (no_es_mcd){
                menor--;
                no_es_mcd=false;
            } else{
                //En caso de que todos los números sean divisible por menor, 
                //salgo del bucle principal while pq ya he encontrado el mcd
                probar_siguiente=false;
            }
        }
                    
        return menor;
    }
    
    public static void main(String[] args) {
        int[] numeros={4,8,30,124};
        
        System.out.println("Lista de numeros:"+Arrays.toString(numeros));
        System.out.println("Máximo cómun divisor: "+mcd(numeros));
    }    
}

jueves, 12 de enero de 2017

Arrays: Averigua el orden de un array

Construye una función que reciba un array de números enteros y devuelva un valor entero con tres posibilidades:
  • 1 si está ordenado en orden creciente
  • -1 si está ordenado en orden decrecente
  • 0 si no tiene orden
Desde la función principal le pasarás un array con 5 números enteros (los pones tú a mano) y desde dicha función se imprimirán los siguiente resultados según corresponda:

El array [aquí se imprime al contenido del array] está ordenado de forma creciente.
El array [aquí se imprime al contenido del array] está ordenado de forma decreciente.
El array [aquí se imprime al contenido del array] no tiene orden.


Ejemplo:
El array [50, 40, 31, 8, 1] está ordenado de forma decreciente
El array [50, 54, 57, 80, 110] está ordenado de forma decreciente
El array [34,14,345,1,23,3] no tiene orden


SOLUCIÓN EN JAVA:
package ordenarrays;

public class OrdenArrays {

    //Esta función averigua el orden del array que se le pasa como parámetro
    //  1 Si está ordenado de forma creciente
    // -1 Si está ordenado de forma decreciente
    //  0 Si no está ordenado
    static int averiguaOrden(int array[]) {
        int paresOrdenadosAscendente = 0, paresOrdenadosDescendente = 0, resultado;

        //Recorro todo el array y cuento los pares que hay ordenados de forma creciente
        //y también cuento los que hay ordenados de forma decreciente
        for (int i = 0; i < array.length - 1; i++) {
            if (array[i] > array[i + 1]) {
                paresOrdenadosAscendente++;
            }
            if (array[i] < array[i + 1]) {
                paresOrdenadosDescendente++;
            }
        }
        if (paresOrdenadosAscendente == array.length - 1) {
            //Si los pares ordenados de forma creciente es igual al total de pares
            //es porque está ordenado de forma creciente todo el array
            resultado = 1;
        } else if (paresOrdenadosDescendente == array.length - 1) {
            //Si los pares ordenados de forma decreciente es igual al total de pares
            //es porque está ordenado de forma decreciente todo el array
            resultado = -1;
        } else {
            //En caso contrario, es porque no hay orden
            resultado = 0;
        }

        return resultado;
    }

    public static void main(String[] args) {
        //Creo un array con valores arbitrarios
        int array[] = {50, 40, 31, 8, 1};
        int orden;

        //Hago una llamada a la función para averiguar el orden del array
        orden = averiguaOrden(array);
        //Dependiendo del valor que devuelva la llamada a la función tendré
        //que imprimir el orden correspondiente
        switch (orden) {
            case 0:
                System.out.print("El array "+Arrays.toString(array)+" no tiene orden");
                break;
            case 1:
                System.out.print("El array "+Arrays.toString(array)+" está ordenado de forma decreciente");
                break;
            case -1:
                System.out.print("El array "+Arrays.toString(array)+" está ordenado de forma decreciente");
                break;
        }
    }
}

lunes, 26 de diciembre de 2016

Funciones: Mínimo común múltiplo de dos números

Crea una función que calcule al mínimo común múltiplo de dos números cualesquiera. Desde la función principal se tendrá que pedir al usuario dos números y calcular el mínimo común múltiplo haciendo una llamada a la función creada.

Ejemplo:
Introduzca primer número:
> 3
Introduzca segundo número:
> 9

El mínimo común múltiplo de 3 y 9 es 9


Introduzca primer número:
> 6
Introduzca segundo número:
> 20

El mínimo común múltiplo de 6 y 20 es 60


SOLUCIÓN EN JAVA:
package mcm;

import javax.swing.JOptionPane;

public class MCM {
    static int mcm(int a, int b){
        int multiplo;
        
        //Lo primero es seleccionar el mayor de los dos
        if (a>b)
            multiplo=a;
        else
            multiplo=b;
        //Y ahora empiezo a probar si ese número es el mcm o lo son
        //los sucesivos superiores a él
        while (multiplo%a!=0 || multiplo%b!=0)
            multiplo++;
        //Para salir del bucle while, se deben cumplir:
        //- multiplo es un número múltiplo de a y de b simultáneamente        
        return multiplo;
    }
    
    public static void main(String[] args) {
       int valor1, valor2, resultado;
       //Pido al usuario los dos numeros para calcular el mcm:
       try{
           valor1=Integer.parseInt(JOptionPane.showInputDialog("Introduzca primer número:"));
           valor2=Integer.parseInt(JOptionPane.showInputDialog("Introduzca segundo número:"));
           
           //y ahora calculo el mínimo común múltiplo llamando a la función "mcm"
           resultado=mcm(valor1,valor2);
           
           JOptionPane.showMessageDialog(null, "El mínimo común múltiplo de "+valor1+" y "+valor2+" es "+resultado);
       } catch (NumberFormatException e){
           JOptionPane.showMessageDialog(null, "Formato de número incorrecto");
       }
    }       
}

Funciones: Máximo común divisor de dos números

Crea una función que calcule al máximo común divisor de dos números cualesquiera.
Desde la función principal se tendrá que pedir al usuario dos números y calcular el máximo común divisor haciendo una llamada a la función creada.


Ejemplo:
Introduzca primer número:
> 3
Introduzca segundo número:
> 9

El máximo comun divisor de 3 y 9 es 3


Introduzca primer número:
> 6
Introduzca segundo número:
> 20

El máximo comun divisor de 6 y 20 es 2


SOLUCIÓN EN JAVA:
package mcd;

import javax.swing.JOptionPane;

public class MCD {

    static int mcd(int a, int b){
        int divisor;
        
        //Lo primero es seleccionar el menor de los dos
        if (a>b)
            divisor=b;
        else
            divisor=a;
        //Y ahora empiezo a probar si ese número es el mcd o lo son
        //los sucesivos inferiores a él
        while ((a%divisor!=0 || b%divisor!=0) && divisor>1)
            divisor--;
        //Para salir del bucle while, se deben cumplir una de las dos condiciones:
        //- divisor es un mcd de ambos números
        //- divisor ha llegado a valer 1, con lo cual ése es el máximo común divisor
        return divisor;
    }
    
    public static void main(String[] args) {
       int valor1, valor2, resultado;
       //Pido al usuario los dos numeros para calcular el mcd:
       try{
           valor1=Integer.parseInt(JOptionPane.showInputDialog("Introduzca primer número:"));
           valor2=Integer.parseInt(JOptionPane.showInputDialog("Introduzca segundo número:"));
           
           //y ahora calculo el máximo común divisor llamando a la función "mcd"
           resultado=mcd(valor1,valor2);
           
           JOptionPane.showMessageDialog(null, "El máximo común divisor de "+valor1+" y "+valor2+" es "+resultado);
       } catch (NumberFormatException e){
           JOptionPane.showMessageDialog(null, "Formato de número incorrecto");
       }
    }
    
}