tag:blogger.com,1999:blog-25440454533210177202024-03-05T13:03:11.025-08:00Ejercicios Resueltos de Programación en JavaJosé Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.comBlogger48125tag:blogger.com,1999:blog-2544045453321017720.post-79041840255031640652017-04-20T14:16:00.002-07:002017-04-20T14:16:53.633-07:00Averiguar la palabra secreta<span class="descripcion_entrada">
Crea una aplicación que pida al usuario una palabra secreta y, a continuación, tendrá tres oportunidades de adivinarla.<br>
<br>
Si no la acierta en los tres intentos se informará de cuál era la palabra correcta, y si acierta en cualquiera de los tres intentos, el programa finalizará indicándo al usuario que ha acertado.
<br>
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Introduzca palabra secreta:<br>
<br>
> “Madagascar”<br>
<br>
Intenta averiguar la palabra, intento 1:<br>
<br>
> “amigo”<br>
<br>
Intenta averiguar la palabra, intento 2:<br>
<br>
> “perro”<br>
<br>
Intenta averiguar la palabra, intento 3:<br>
<br>
> “madagascar”<br>
<br>
Enhorabuena!!
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package averiguapassword;
import javax.swing.JOptionPane;
public class AveriguaPassword {
public static void main(String[] args) {
int intentos=0;
String secreta, palabra;
secreta=JOptionPane.showInputDialog("Introduzca la palabra secreta");
do{
palabra=JOptionPane.showInputDialog("Intenta averiguar la palabra, intento: "+(intentos+1));
//Se seguirán dando oportunidades mientras que el usuario no acierte ni consuma los 3 intentos
} while (!palabra.equalsIgnoreCase(secreta) && ++intentos<3);
if (intentos==3){
JOptionPane.showMessageDialog(null, "Lo siento, la palabra secreta era: "+secreta);
} else {
JOptionPane.showMessageDialog(null, "Enhorabuena!!");
}
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-9381594494791859612017-03-23T03:41:00.002-07:002017-03-23T03:41:55.173-07:00Pasar una subcadena a mayúsculas<span class="descripcion_entrada">
Crea una función que reciba dos cadenas de caracteres y que devuelva la primera cadena, pero transformando en mayúsculas la parte que coincide con la segunda cadena introducida.<br>
<br>
Desde la función principal se pedirán las dos cadenas y se mostrará el resultado que devuelva la función de arriba.
<br>
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Introduzca primera cadena:<br>
<br>
> “Este es mi amigo Juan”<br>
<br>
Introduzca segunda cadena:<br>
<br>
> “amigo”<br>
<br>
Resultado: “Este es mi AMIGO Juan”.
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package subcadenamayuscula;
import javax.swing.JOptionPane;
public class SubcadenaMayuscula {
static String pasaMayusculas(String cadena, String parte){
int posicion;
String subcadena;
posicion=cadena.indexOf(parte);
if (posicion!=-1){ //Solo si el resultado de llamar a indexOf es distinto de -1 es porque la ha encontrado
subcadena=cadena.substring(posicion,posicion+parte.length());
//Devuelvo la nueva cadena formada por la primera parte de la cadena principal si tocar,
//la segunda parte pasada a mayúsculas y la tercer parte sin tocar
return cadena.substring(0,posicion)+subcadena.toUpperCase()+cadena.substring(posicion+parte.length());
} else{
return cadena;
}
}
public static void main(String[] args) {
String cadena1,cadena2;
cadena1=JOptionPane.showInputDialog("Introduzca primera cadena:");
cadena2=JOptionPane.showInputDialog("Introduzca segunda cadena:");
JOptionPane.showMessageDialog(null, "Resultado: "+pasaMayusculas(cadena1,cadena2));
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-71934092054508512962017-03-22T11:03:00.002-07:002017-03-22T11:04:39.477-07:00Cadena Espejo<span class="descripcion_entrada">
Crea una función que reciba una cadena de caracteres y la devuelva invertida con efecto espejo, esto es, se concatena a la palabra original su inversa, compartiendo la última letra, que hará de espejo, por lo que la palabra obtenida se lee igual hacia adelante que hacia atrás.<br>
<br>
Desde la función principal se pedirá al usuario que introduzca una cadena y haciendo uso de dicha función se le mostrará su correspondiente cadena espejo.<br>
<br>
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Introduzca una cadena:<br>
<br>
> “teclado”<br>
<br>
Resultado: “tecladodalcet”<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package cadenainvertida;
import javax.swing.JOptionPane;
public class CadenaInvertida {
static String espejo(String original){
int i;
String nueva="";
for (i=original.length()-1 ; i >= 0 ; i--){
nueva=nueva+original.charAt(i);
}
return original+nueva;
}
public static void main(String[] args) {
String cadena;
cadena=JOptionPane.showInputDialog("Introduza una cadena");
System.out.println("Resultado: "+espejo(cadena));
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com1tag:blogger.com,1999:blog-2544045453321017720.post-81937967252749205872017-02-14T09:58:00.003-08:002017-02-14T09:58:48.268-08:00Elimina espacios en blanco de una frase<span class="descripcion_entrada">
Crea una función que reciba como parámetro una cadena y devuelva la cadena eliminando los espacios en blanco que hay en ella.<br>
Pruébala pidiendo al usuario que introduzca una frase desde la función principal y mostrándola sin espacios utilizando dicha función.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Introduzca una frase:<br>
<br>
> En un lugar de la Mancha<br>
<br>
Resultado: EnunlugardelaMancha
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package eliminaespaciosfrase;
import javax.swing.JOptionPane;
public class EliminaEspaciosFrase {
//Para eliminar los espacios utilizo la función indexOf que
//devuelve la posición del primer espacion en blanco a partir
//de una posición dada.
//La idea general es componer una nueva frase, pero solo añadiendo
//las palabras de la frase original y no los espacios, para marcar el
//comienzo y final de cada palabra utilizo la función indexOf
static String eliminaEspacios(String frase){
String resultado="";
int i=0,j;
do {
j=frase.indexOf(" ",i);
if (j!=-1){
resultado=resultado+frase.substring(i,j);
i=j+1;
} else {
resultado=resultado+frase.substring(i,frase.length());
}
} while (j!=-1);
return resultado;
}
public static void main(String[] args) {
String frase;
frase=JOptionPane.showInputDialog(null, "Introduzca una frase:");
System.out.println("La frase sin espacios es: "+eliminaEspacios(frase));
}
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-43323694014522589792017-02-14T09:16:00.000-08:002017-02-14T10:07:27.194-08:00Intercambia primera y última palabras de una frase<span class="descripcion_entrada">
Crea una función que reciba como parámetro una cadena de texto con una frase y dicha función tendrá que devolver dicha cadena pero invirtiendo la primera y la última palabra.<br>
Desde la función principal tendrás que pedir al usuario que introduzca una frase y le mostrarás dicha frase con la primera y última palabra intercambiada.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Introduzca una frase:<br>
<br>
> El cielo tiene nubes negras<br>
<br>
Resultado: negras cielo tiene nubes El
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package invierteprimeraultima;
import javax.swing.JOptionPane;
public class InviertePrimeraUltima {
//Esta función divide la frase en tres partes:
// 1. primera palabra
// 2. desde la segunda palabra hasta la penúltima
// 3. última palabra
// y devuelve la frase poniendo las partes en el orden 3-2-1
static String invierte(String cadena){
String parte1,parte2,parte3;
//Primero comprueba que haya al menos un espacio
if (cadena.indexOf(" ")!=-1){
parte1=cadena.substring(0,cadena.indexOf(" "));
parte2=cadena.substring(cadena.indexOf(" "),cadena.lastIndexOf(" ")+1);
parte3=cadena.substring(cadena.lastIndexOf(" "),cadena.length());
return parte3+parte2+parte1;
} else {
//sino hay ningún espacio quiere decir que se trataba de una sola palabra
//así que la devuelvo tal cual
return cadena;
}
}
public static void main(String[] args) {
String frase;
frase=JOptionPane.showInputDialog("Introduzca una frase (al menos de dos palabras)");
System.out.println("Cadena invirtiendo primer y última palabras: "+invierte(frase));
}
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-39164253978921044592017-02-13T00:42:00.001-08:002017-02-13T00:42:10.320-08:00Calculo letra DNI<span class="descripcion_entrada">
Crea una función para calcular la letra del NIF que le corresponde al número de DNI que le pasan como parámetro.<br>
Desde la función principal tendrás que pedir al usuario un número de DNI y mostrar la letra que le corresponde al usuario haciendo uso de la función anterior.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Introduzca un número de DNI:<br>
> 22356857<br>
Al DNI: 22356857 le corresponde la letra: Y<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package calculonif;
import javax.swing.JOptionPane;
public class CalculoNIF {
//Esta función devuelve la letra que le corresponde al número de dni que se le
//pasa como parámetro
static char calculaLetra(long numero){
String letras="TRWAGMYFPDXBNJZSQVHLCKE";
int posicion;
//Calculo el resto de la división entre 23 para veriguar la posición
//dentro de la cadena de letras definida arriba
posicion=(int)(numero%23);
//Devuelvo la letra que hay en la posición "posicion" de la cadena de letras
return letras.charAt(posicion);
}
public static void main(String[] args) {
String dni;
long numero=0;
dni=JOptionPane.showInputDialog("Introduzca un número de DNI:");
try{
numero=Long.parseLong(dni);
JOptionPane.showMessageDialog(null,"Al número de DNI: "+dni+" le corresponde la letra: "+calculaLetra(numero));
} catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "Formato incorrecto en el dni");
}
}
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-21842467856032713662017-02-09T13:23:00.001-08:002017-02-09T13:24:21.404-08:00Cadenas: Cuenta número de vocales<span class="descripcion_entrada">
Crea una función que cuente el número de vocales que contiene una cadena.<br>
Desde la función principal tendrás que pedir una palabra o frase al usuario y tendrás que mostrar el número de vocales que contiene haciendo uso de la función anterior.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Introduzca una palabra o frase:<br><br>
> “La lluvia en Sevilla es una maravilla”<br><br>
La palabra o frase contiene 15 vocales.
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package numerovocales;
import javax.swing.JOptionPane;
public class NumeroVocales {
static int cuentaVocales(String cadena){
int suma=0,i;
//Para evitar comparar minúscula y mayúsculas de forma separada
//transformo toda la cadena a minúsculas
cadena=cadena.toLowerCase();
for (i=0 ; i < cadena.length() ; i++){
if (cadena.charAt(i)=='a' ||
cadena.charAt(i)=='e' ||
cadena.charAt(i)=='i' ||
cadena.charAt(i)=='o' ||
cadena.charAt(i)=='u') {
suma++;
}
}
return suma;
}
public static void main(String[] args) {
String cadena;
//Pido al usuario una palabra o frase
cadena=JOptionPane.showInputDialog("Introduce una palabra o frase:");
//Y muestro el número de vocales que contiene dicha palabra o frase
//haciendo uso de la funcion "cuentaVocales" creada más arriba
System.out.println("El número de vocales de la cadena es: "+cuentaVocales(cadena));
}
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com1tag:blogger.com,1999:blog-2544045453321017720.post-55978467960998783242017-02-06T00:35:00.001-08:002017-02-06T00:35:30.442-08:00Matrices: Suma los elementos de una matriz<span class="descripcion_entrada">
Crea una función que devuelva la suma de los elementos de una matriz de números enteros pasada como parámetro.<br>
Crea otra función para generar una matriz de números aleatorios del 1 al 10, con un número de filas y columnas determinado desde la función principal.<br>
Y por último crea otra función para mostrar por consola una matriz de números enteros.<br>
Ahora, desde la función principal, tendrás que crear un matriz de 10x10 con números aleatorios, mostrarla por consola y mostrar también el resultado de sumar los elementos de dicha matriz.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
<pre>
2 3 4 6 10 9 3 10 7 9
4 10 9 10 9 5 6 6 7 9
10 1 6 4 9 6 2 6 6 5
1 9 2 2 7 3 10 8 2 1
5 2 4 6 2 1 5 10 7 5
4 8 4 8 7 1 2 4 9 6
2 3 10 9 7 6 9 3 1 3
4 4 6 3 5 8 3 9 3 6
5 7 7 7 7 8 2 1 1 2
7 5 2 8 4 4 9 1 8 7
La suma total de los elementos de la matriz es: 544
</pre>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package sumamatriz;
public class SumaMatriz {
//Con esta función sumamos los elementos de la matriz
static int sumaMatriz(int [][] matriz){
int f,c,suma=0;
for (f=0;f < matriz.length;f++){
for (c=0;c < matriz[f].length;c++){
suma=suma+matriz[f][c];
}
}
return suma;
}
//Con esta función generamos una matriz del tamaña que me indican como parámetro
//en filas y columnas con números aleatorios entre 1 y 10
static int[][] generaMatrizAleatoria(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]=(int)(Math.random()*10+1);
}
}
return matriz;
}
//Función para mostrar la matriz formateada en filas y columnas
static void muestraMatriz(int[][] matriz){
int f,c;
for (f=0;f < matriz.length;f++){
for (c=0;c < matriz[f].length;c++){
System.out.printf("%3d",matriz[f][c]);
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] matriz;
int suma;
//Genero la matriz de 10x10 y la guardo en la variable "matriz"
matriz=generaMatrizAleatoria(10,10);
//Llamo a la función para que aparezca por consola la matriz generada
muestraMatriz(matriz);
//Guardo en la variable "suma" el resultado de sumar todos los elementos de la matriz
suma=sumaMatriz(matriz);
//y muestro el resultado por pantalla
System.out.println("\nLa suma total de los elementos de la matriz es: "+suma);
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com1tag:blogger.com,1999:blog-2544045453321017720.post-40188787464445288912017-02-01T09:04:00.004-08:002017-02-01T09:06:16.814-08:00Matrices: Tablas de multiplicar<span class="descripcion_entrada">
<pre>
Crea una función que en primer lugar genere esta matriz:
0 1 2 3 4 5 6 7 8 9 10
1 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0 0 0 0
</pre>
Como ves la primera fila y la primera columna tienes valores del 1 al 10.
A continuación rellena los valores centrales con el resultado de multiplicar el número que aparezca en la primera fila
por el número que aparezca en la primera columna, de tal forma que quede esto:
<pre>
0 1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100
</pre>
</span>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package matricestablasmultiplicar;
public class MatricesTablasMultiplicar {
static int[][] generaMatriz(int filas, int columnas){
int i,j;
int[][] matriz = new int[filas][columnas];
//Relleno la primera fila y la primera columna de la matriz
for (i=0 ; i < matriz.length ; i++){
matriz[i][0]=i;
matriz[0][i]=i;
}
//Ahora relleno el resto de la matriz
for (i=1 ; i < matriz.length ; i++){
for (j=1 ; j < matriz[i].length ; j++){
matriz[i][j]=i*j;
}
}
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 muestraMatriz(int[][] matriz){
int i,j;
for (i=0; i < matriz.length ; i++){
for (j=0 ; j < matriz[i].length ; j++){
System.out.printf("%4d", matriz[i][j]);
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] matriz=new int[11][11];
matriz=generaMatriz(11,11);
muestraMatriz(matriz);
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com3tag:blogger.com,1999:blog-2544045453321017720.post-75968561721871331702017-01-30T23:58:00.001-08:002017-02-01T03:09:29.878-08:00Matrices: Intercambiar filas y columnas<span class="descripcion_entrada">
Crea un programa para transponer filas por columnas en un array bidimensional de números enteros.<br>
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada"><pre>
Array Original...
7 7 3 1 10
2 8 8 3 9
2 5 5 8 3
10 5 4 4 6
4 3 1 6 5
6 2 7 8 10
3 10 4 3 9
2 3 5 8 1
9 6 8 3 9
Array transpuesto...
7 2 2 10 4 6 3 2 9
7 8 5 5 3 2 10 3 6
3 8 5 4 1 7 4 5 8
1 3 8 4 6 8 3 8 3
10 9 3 6 5 10 9 1 9</pre>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package transponerarrays;
public class TransponerArrays {
//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
static void muestraArray(int[][] matriz){
int i,j;
for (i=0; i < matriz.length ; i++){
for (j=0 ; j < matriz[i].length ; j++){
System.out.printf("%3d", matriz[i][j]);
}
System.out.println();
}
}
//Con esta función intercambio filas por columnas. A partir del array que recibe
//como parámetro genera otro array transpuesto.
static int[][] transponer(int[][] matriz){
int[][] resultado=new int[matriz[0].length][matriz.length];
int filas,columnas;
for (columnas=0 ; columnas < matriz[0].length ; columnas++){
for (filas=0 ; filas < matriz.length ; filas++){
resultado[columnas][filas]=matriz[filas][columnas];
}
}
return resultado;
}
public static void main(String[] args) {
int [][]matriz;
matriz=generaArrayAleatorio(9,5);
System.out.println("Array Original...");
muestraArray(matriz);
System.out.println();
System.out.println("Array transpuesto...");
matriz=transponer(matriz);
muestraArray(matriz);
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com1tag:blogger.com,1999:blog-2544045453321017720.post-15567715903843902942017-01-30T09:34:00.000-08:002017-11-23T00:13:14.221-08:00Matrices: Suma los elementos de cada fila<span class="descripcion_entrada">
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.<br>
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<br>
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<br>
a "muestraArray" para mostrar el array con la suma de las filas al final.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada"><pre>
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</pre>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: 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);
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com1tag:blogger.com,1999:blog-2544045453321017720.post-38369523993003315762017-01-26T07:27:00.002-08:002017-01-26T07:28:39.203-08:00Matrices: Diagonal principal con 1<span class="descripcion_entrada">
Crear un array bidimensional de tamaño 7x7 y rellénalo de forma que los elementos de la diagonal principal sean 1 y el resto 0.
Muéstra el array por pantalla en forma de cuadrado.<br>
Nota. Consideramos la diagonal principal la que empieza arriba a la izquierda y termina abajo a la derecha.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
[1, 0, 0, 0, 0, 0, 0]<br>
[0, 1, 0, 0, 0, 0, 0]<br>
[0, 0, 1, 0, 0, 0, 0]<br>
[0, 0, 0, 1, 0, 0, 0]<br>
[0, 0, 0, 0, 1, 0, 0]<br>
[0, 0, 0, 0, 0, 1, 0]<br>
[0, 0, 0, 0, 0, 0, 1]<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package diagonalprincipal;
import java.util.Arrays;
public class DiagonalPrincipal {
public static void main(String[] args) {
int[][] matriz = new int[7][7];
int f;
//Relleno la diagonal principal con 1
//Solo tengo que recorrer las casillas en las que el número de fila es
//igual que el número de columna: matriz[0][0]=matriz[1][1]...=matriz[6][6]=1
for (f=0 ; f < matriz.length ; f++){
matriz[f][f]=1;
}
//Muestro las filas de la matriz haciendo uso de la libreria "Arrays"
for (f=0 ; f < matriz.length ; f++){
System.out.println(Arrays.toString(matriz[f]));
}
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-2030335115867921172017-01-25T09:41:00.002-08:002017-01-25T09:45:08.174-08:00Matrices: Crea una matriz en la que cada casilla sea la suma de su fila y su columnaHaz 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).<br />
<ul>
<li>matriz[fila][columna]=fila+columna</li>
</ul>
<div>
Crea otra función "imprimeMatriz" para imprimir por pantalla dicha matriz.<br />
<br /></div>
<div>
Desde la función principal:</div>
<div>
<ul>
<li>LLama a la función "generaMatriz" para crear una matriz de 10x10</li>
<li>Llama a la función "imprimeMatriz" para mostrarla por pantalla</li>
</ul>
</div>
<br />
<br />
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
<pre> 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</pre>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: 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);
}
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-74246093831091611312017-01-24T09:49:00.000-08:002017-01-24T10:10:14.214-08:00Arrays: Buscar siguiente elemento<span class="descripcion_entrada">
</span>
<br />
<div style="background-color: white; color: #055970; font-family: "PT Sans", Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 10px;">
Crea una función "buscarSiguiente" que reciba tres parámetros:</div>
<ul style="background-color: white; color: #055970; font-family: "PT Sans", Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px 0px 10px 25px; padding: 0px;">
<li style="line-height: 20px;">un array de números enteros</li>
<li style="line-height: 20px;">una posición dentro del array</li>
<li style="line-height: 20px;">el número que se desea buscar en el array a partir de dicha posición</li>
</ul>
<div style="background-color: white; color: #055970; font-family: "PT Sans", Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 10px;">
La función devolverá:</div>
<ul style="background-color: white; color: #055970; font-family: "PT Sans", Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px 0px 10px 25px; padding: 0px;">
<li style="line-height: 20px;">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</li>
<li style="line-height: 20px;">un -1 si no lo encuentra a partir de la posición dada</li>
</ul>
<div style="background-color: white; color: #055970; font-family: "PT Sans", Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 10px;">
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.</div>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Introduzca un número del 1 al 10:<br>
> 5
<br><br>
Dentro del array :[1, 9, 6, 9, 9, 3, 6, 1, 8, 9, 5, 8, 2, 5, 2, 1, 8, 9, 6, 10]<br>
El número 5 está en las siguientes posiciones:<br>
Posición: 10<br>
Posición: 13<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: 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);
}
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-53703110828752231622017-01-21T00:47:00.001-08:002017-01-21T07:06:37.305-08:00Arrays: Separar pares e impares<span class="descripcion_entrada">
Crea un array de 10 elementos con números aleatorios del 1 al 100 y muéstralo por pantalla.
<br>
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.<br>
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Array Inicial:<br>
5, 9, 18, 50, 49, 67, 2, 99, 97, 20<br>
<br>
Array Ordenado:<br>
18, 50, 2, 20, 5, 9, 49, 67, 99, 97<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: 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));
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-29235119644854357192017-01-18T01:47:00.002-08:002017-01-18T01:51:34.563-08:00Arrays: Elimina un elemento<span class="descripcion_entrada">
Crea una función "elimina" que reciba como parámetros un array de números y una posición dentro del array. La función tiene que eliminar el elemento que se encuentre en dicha posición desplazando a la izquierda todos los elementos que haya por encima de dicha posición y devolverá el nuevo array que tendrá un elemento menos.
<br />
Desde la función principal tendrás que crear un array de 10 elemento y los inicializas con valores aleatorias entre 1 y 100. Ahora tendrás que pedir al usuario la posición que desea eliminar del array y hacer una llamada a la función "elimina" pasándole el array y la posición para que elimine el elemento que hay en dicha posición. <br />
Imprime el contenido del array antes y después de la llamada a la función "elimina".<br /></span>
<br />
<br />
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Array inicial:<br />
<table border="1" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td>15</td>
<td>5</td>
<td>2</td>
<td>90</td>
<td>78</td>
<td>45</td>
<td>32</td>
<td>87</td>
<td>47</td>
<td>5</td>
</tr>
</tbody>
</table>
<br />
Introduce posición:<br />
> 5<br />
<br />
Array después de haber eleminado la posición 5:<br />
<table border="1" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td>15</td>
<td>5</td>
<td>2</td>
<td>90</td>
<td>45</td>
<td>32</td>
<td>87</td>
<td>47</td>
<td>5</td>
</tr>
</tbody>
</table>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package eliminaelemento;
import java.util.Arrays;
import javax.swing.JOptionPane;
public class EliminaElemento {
static int[] elimina(int[] lista, int posicion){
int []nuevaLista=new int[lista.length-1];
int i;
//Primero copio los elementos que hay antes de posición en el nuevo array
for (i=0;i < posicion-1;i++){
nuevaLista[i]=lista[i];
}
//Y ahora copio los elementos que hay detras de posición en el nuevo array
//de este forma el único elemento que no copio es el que hay en la posición "posicion"
for (i=posicion;i < lista.length;i++){
nuevaLista[i-1]=lista[i];
}
return nuevaLista;
}
public static void main(String[] args) {
int[] lista=new int[10];
int i, posicion;
//Genero los 10 números aleatorios para el array
for (i=0;i < lista.length;i++){
lista[i]=(int)(Math.random()*100+1);
}
//Muestro el array inicial
System.out.println("Array inicial: "+Arrays.toString(lista));
System.out.println();
try {
//Pido al usuario la posición
posicion=Integer.parseInt(JOptionPane.showInputDialog("Introduce la posición del elemento que quieres eliminar:"));
//llamo a la función para que elimine dicha posición
lista=elimina(lista,posicion);
//Vuelvo a imprimir la lista
System.out.println("Array después de haber eliminado la posición "+posicion+": "+Arrays.toString(lista));
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Formato incorrecto");
}
}
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-61356908093380975272017-01-18T01:18:00.000-08:002017-01-18T01:18:30.171-08:00Arrays: Calcula el Máximo Común Divisor de una array de números enteros<span class="descripcion_entrada">
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.<br>
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.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Lista de numeros:[12, 6, 18, 24]<br>
Máximo cómun divisor: 6<br><br>
Lista de numeros:[4, 8, 30, 124]<br>
Máximo cómun divisor: 2<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: 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));
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com3tag:blogger.com,1999:blog-2544045453321017720.post-28763648397018345632017-01-13T10:31:00.000-08:002017-01-13T10:34:30.278-08:00Arrays: Desplaza a la derecha circularmente<span class="descripcion_entrada">
Crea una función de nombre desplazaDerecha, que tomará como parámetro un array de números enteros y desplace una posición hacia la derecha sus elementos: el primero pasa a ser el segundo, el segundo pasa a ser el tercero y así sucesivamente. El último pasa a ser el primero.<br>
Desde la función principal crea un array de 10 números enteros (inicialízalo con valores aleatorios del 1 al 100) y muéstralo por pantalla, después haz una llamada a la función desplazaDerecha para que desplace los elementos del array y posteriormente imprime el array resultante para comprobar que lo ha hecho bien.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Array inicial: [38, 16, 1, 5, 8, 77, 52, 29, 10, 70]<br>
Array desplazado: [70, 38, 16, 1, 5, 8, 77, 52, 29, 10]<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package desplazaderecha;
import java.util.Arrays;
public class DesplazaDerecha {
static void desplazaDerecha(int[] lista){
int i,ultimo;
//Cojo el último elemento del array y lo guardo en "ultimo"
ultimo=lista[lista.length-1];
//desplazo todos los elementos de derecha a izquierda
//dejando sin hueco en la primera posición
for(i=lista.length-1; i>0; i--){
lista[i]=lista[i-1];
}
//pongo en la primera posición "ultimo" que rescaté al principio
lista[0]=ultimo;
}
public static void main(String[] args) {
int[] numeros=new int[10];
int i;
//Inicializo el array con valores aleatorios del 1 al 100
for (i=0;i < numeros.length;i++)
numeros[i]=(int)(Math.random()*100+1);
System.out.println("Array inicial: "+Arrays.toString(numeros));
//desplazo a la derecha el array
desplazaDerecha(numeros);
System.out.println("Array desplazado: "+Arrays.toString(numeros));
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-73057034265084347882017-01-12T03:02:00.000-08:002017-01-12T03:12:13.654-08:00Arrays: Averigua el orden de un array<span class="descripcion_entrada">
Construye una función que reciba un array de números enteros y devuelva un valor entero con tres posibilidades:<br>
<ul>
<li>1 si está ordenado en orden creciente</li>
<li>-1 si está ordenado en orden decrecente</li>
<li>0 si no tiene orden</li>
</ul>
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:<br>
<br>
El array [aquí se imprime al contenido del array] está ordenado de forma creciente.<br>
El array [aquí se imprime al contenido del array] está ordenado de forma decreciente.<br>
El array [aquí se imprime al contenido del array] no tiene orden.<br>
</span>
<br />
<br />
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
El array [50, 40, 31, 8, 1] está ordenado de forma decreciente<br />
El array [50, 54, 57, 80, 110] está ordenado de forma decreciente<br>
El array [34,14,345,1,23,3] no tiene orden<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: 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;
}
}
}
</pre>
</div>
José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-3428126730184177982017-01-11T00:35:00.000-08:002017-01-12T03:05:54.933-08:00Arrays: Insertar un elemento<span class="descripcion_entrada">
Crea una función de nombre "insertaElemento" que reciba un array de enteros, pida por teclado un número y una posición (dentro del array) y lo inserte en ese posición desplazando a la derecha el resto (se perderá el último elemento).<br>
Para probarlo desde la función principal tendrás que declarar un array de 10 elementos (inicialízalo a mano y muéstralo por consola) y llamar a la función"insertaElemento" pasándole dicho array, y después de haberla llamado y que se haya ejecutado, tendrás que mostrar como ha quedado el array después de la inserción.
</span>
<br />
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Array inicial: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] <br>
Inserta posición: <br>
> 5<br>
Inserta elemento:<br>
> 50<br>
Array después de la inserción: [1, 2, 3, 4, 50, 5, 6, 7, 8, 9]<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package insertaelementoarray;
import java.util.Arrays;
import javax.swing.JOptionPane;
public class InsertaElementoArray {
static void insertaElemento(int[] lista){
int i,elemento,posicion;
try {
do {
posicion=Integer.parseInt(JOptionPane.showInputDialog("Introduce la posición en la que quieres insertar:"));
if (posicion<1 || posicion>lista.length)
JOptionPane.showMessageDialog(null, "La posición tiene que estar entre 1 y "+lista.length);
} while (posicion<1 || posicion>lista.length);
elemento=Integer.parseInt(JOptionPane.showInputDialog("Introduce el elemento que quieres insertar:"));
//Ahora empieza la inserción:
//Primero desplazo a la derecha todos los elementos que hay a partir
//de la posición "posicion-1" (resto 1 porque los arrays empiezan por cero)
for (i=lista.length-1;i>=posicion;i--)
lista[i]=lista[i-1];
lista[i]=elemento;
} catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "Formato incorrecto");
}
}
public static void main(String[] args) {
int[] numeros={1,2,3,4,5,6,7,8,9,10};
System.out.println(Arrays.toString(numeros));
insertaElemento(numeros);
System.out.println(Arrays.toString(numeros));
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-66363514830041676612017-01-07T04:45:00.001-08:002017-01-17T03:34:04.064-08:00Arrays: Función para ordenar un array<span class="descripcion_entrada">
Escribe una función que reciba como parámetro un array de números enteros y los ordene de menor a mayor en dicho array<br>
Desde la función principal tendrás que generar un array de números enteros aleatorios comprendidos entre 1 y 100, mostrarlos sin ordenar y mostrarlos depués de haber llamado a la función que los ordena.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Números sin ordenadar:<br>
4 16 93 86 90 72 76 57 69 71 <br><br>
Números ordenados:<br>
4 16 57 69 71 72 76 86 90 93<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package ordenararray;
public class OrdenarArray {
static void ordena(int[] lista){
int aux,i,j;
for (i=0;i < lista.length;i++){
for (j=i;j < lista.length;j++){
//Si el elemento lista[i] es superior a cualquiera que hay detrás de él
//tenemos que intercambiarlo, de esta forma, al finalizar el bucle anidado
//el elemento lista[i] será menor que todos los que quedan a su derecha
if (lista[i]>lista[j]){
aux=lista[i];
lista[i]=lista[j];
lista[j]=aux;
}
}
}
}
public static void main(String[] args) {
int[] numeros=new int[10];
int i;
for (i=0;i < numeros.length ; i++){
numeros[i]=(int)(Math.random()*100+1);
}
System.out.println("Números sin ordenadar:");
for (i=0;i < numeros.length; i++){
System.out.print(numeros[i]+" ");
}
System.out.println();
ordena(numeros);
System.out.println("Números ordenados:");
for (i=0;i < numeros.length; i++){
System.out.print(numeros[i]+" ");
}
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-60896048928977389172017-01-03T04:16:00.000-08:002017-01-09T07:46:18.843-08:00Arrays: Mezcla dos arrays de números enteros<span class="descripcion_entrada">
Inicializa dos arrays (A y B) de 10 números enteros de forma aleatoria con números comprendidos entre el 1 y el 100.<br>
Ahora mézclalos en un tercer array (C) utilizando un bucle de forma que queden: el 1º de A, el 1º de B, el 2º de A, el 2º de B, etc<br>
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Array A: <br>
<table border=1 cellspacing=0>
<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr>
</table>
<br>
Array B: <br>
<table border=1 cellspacing=0>
<tr><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td></tr>
</table>
<br><br>
Array C: <br>
<table border=1 cellspacing=0>
<tr><td>1</td><td>11</td><td>2</td><td>12</td><td>3</td><td>13</td><td>4</td><td>14</td><td>5</td><td>15</td>
<td>6</td><td>16</td><td>7</td><td>17</td><td>8</td><td>18</td><td>9</td><td>19</td><td>10</td><td>20</td>
</tr>
</table><br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package mezcladosarrays;
public class MezclaDosArrays {
public static void main(String[] args) {
int arrayA[] = new int[10];
int arrayB[] = new int[10];
int arrayC[] = new int[20];
int i;
//Inicializo y muestro A
System.out.print("array A: ");
for (i = 0; i < arrayA.length; i++) {
arrayA[i] = (int) (Math.random() * 100 + 1);
System.out.print(arrayA[i] + " ");
}
System.out.println();
//Inicializo y muestro B
System.out.print("array B: ");
for (i = 0; i < arrayB.length; i++) {
arrayB[i] = (int) (Math.random() * 100) + 1;
System.out.print(arrayB[i] + " ");
}
System.out.println();
//Ahora voy rellenando C cogiendo las posiciones pares de A y la impares de B
for (i = 0; i < arrayC.length / 2; i++) {
arrayC[i * 2] = arrayA[i];
arrayC[i * 2 + 1] = arrayB[i];
}
System.out.println();
//Por último muestro C
System.out.print("array C: ");
for (i = 0; i < arrayC.length; i++) {
System.out.print(arrayC[i] + " ");
}
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-65442274596652111322017-01-02T03:58:00.000-08:002017-01-09T23:33:15.097-08:00Arrays: Alternar posiciones de un array<span class="descripcion_entrada">
Inicializa un array con 10 números aleatorios del 1 al 100 y debemos mostrarlos en el siguiente orden utilizando un bucle: el primero, el último, el segundo, el penúltimo, el tercero, el antepenúltimo, etc.<br>
Para que el usuario pueda ver el resultado, deberás mostrar el contenido del array justo después de inicializarlo, y un poco más abajo debes mostrar el array ordenado.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
<table border="1" cellspacing=0>
<tbody>
<tr>
<td>5</td>
<td>23</td>
<td>2</td>
<td>9</td>
<td>1</td>
<td>7</td>
<td>46</td>
<td>34</td>
<td>90</td>
<td>78</td>
</tr>
</tbody>
</table>
<p></p>
<p>Array Modificado:</p>
<table border="1" cellspacing=0>
<tbody>
<tr>
<td>5</td>
<td>78</td>
<td>23</td>
<td>90</td>
<td>2</td>
<td>34</td>
<td>9</td>
<td>46</td>
<td>1</td>
<td>7</td>
</tr>
</tbody>
</table>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package alternarposicionesarray;
import java.util.Arrays;
public class AlternarPosicionesArray {
public static void main(String[] args) {
int [] numeros=new int [10];
int i,a=0;
//Inicializo los dos arrays con valores aleatorios y lo muestro
System.out.print("Array original: ");
for (i=0;i < numeros.length;i++){
numeros[i]=(int)(Math.random()*100)+1;
System.out.print(numeros[i]+" ");
}
System.out.println();
System.out.print("Array alternado: ");
//Ahora hago el recorrido para mostrar el array de forma alterna
//para ello lo voy mostrando por parejas de forma que primero muestro el elemento i
//y después muestro el elemento numeros.length-1-i que se corresponden con las
//parejas de posiciones [0,9,1,8,2,7,3,6,4,5]
for (i=0;i < numeros.length/2;i++){
System.out.println(numeros[i]+" "+numeros[numeros.length-1-i]+" ");
}
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-89107290780455474642017-01-01T01:43:00.002-08:002017-01-01T13:33:11.916-08:00Arrays: Media Positivos y Negativos<span class="descripcion_entrada">
Inicializa un array con 10 números aleatorios comprendidos entre el -50 y el 50 mostrándolos por pantalla.<br>
A continuación,utilizando otro bucle, realizar la media de los números positivos, la media de los negativos y la suma total.<br>
Y finalmente muestra las medias y la suma total.
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
<table border=1 cellspacing=0 >
<tr>
<td>13</td>
<td>16</td>
<td>-30</td>
<td>-38</td>
<td>0</td>
<td>-47</td>
<td>-27</td>
<td>48</td>
<td>45</td>
<td>-43</td>
</tr>
</table>
<br>
Media Positivos: 30.50<br>
Media Negativos: -30.83<br>
Suma Total: -63<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package arraymediapositivosnegativos;
public class ArrayMediaPositivosNegativos {
public static void main(String[] args) {
int numeros[]=new int[10];
int i, sumaTotal=0, positivos=0, negativos=0;
float mediaPositivos=0, mediaNegativos=0;
//Primero lleno el array con números aleatorios del 1 al 100
for (i=0;i<numeros.length;i++){
numeros[i]=(int)(Math.random()*101-50);
System.out.print(numeros[i]+" ");
}
System.out.println();
//Ahora hago el recorrido del array actualizando las medias y el total
//según sea el valor del elemento del array evaluado en cada iteración
for (i=0;i<numeros.length;i++){
sumaTotal+=numeros[i];
if (numeros[i]>0){
mediaPositivos+=numeros[i];
positivos++;
}
else {
mediaNegativos+=numeros[i];
negativos++;
}
}
//Ahora tocal calcular las medias reales dividiendo por el número de elementos
if (positivos>0) mediaPositivos=mediaPositivos/positivos;
if (negativos>0) mediaNegativos=mediaNegativos/negativos;
//Mostramos los resultados utilizo el formato %.2f para que imprima 2 decimales
System.out.printf("Media Positivos: %.2f\n",mediaPositivos);
System.out.printf("Media Negtivos: %.2f\n",mediaNegativos);
System.out.printf("Suma Total: %d\n", sumaTotal);
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0tag:blogger.com,1999:blog-2544045453321017720.post-65941391285781485842016-12-31T08:32:00.003-08:002016-12-31T08:36:11.365-08:00Arrays: Suma un segundo<span class="descripcion_entrada">
Crea una función llamada "sumaUnSegundo" que reciba como prámetro un array que contenga los tres números que componen una hora:<br>
[horas, minutos, segundos]<br>
y a partir de ahí sume un segundo a dicha hora, de tal forma que se tenga en cuenta que si el secundero llega a 60, tendría que aumentarse <br>
en uno los minutos y poner a 0 los segundos, y lo mismo cuando los minutos llegan a 60 y las horas a 24.<br>
Desde la función principal, se pedirá al usuario los datos de una hora completa (horas, minutos y segundos) y se llamará a dicha función para<br>
comprobar que se ha aumentado un segundo de forma correcta.<br>
</span>
<br /><br>
<span class="titulo_ejemplo">Ejemplo:</span>
<br />
<div class="ejemplo_entrada">
Hora: 12<br>
Minutos: 23<br>
Segundos: 59<br>
<br>
Resultado después de sumar un segundo: 12:24:00<br>
<br>
Hora : 14<br>
Minutos: 59<br>
Segundos: 59<br>
<br>
Resultado después de sumar un segundo: 15:00:00<br>
</div>
<br />
<br />
<span class="titulo">SOLUCIÓN EN JAVA:</span>
<br />
<div class="conborde" id="principal">
<pre class="brush: java">
package arrayhorasminutossegundos;
import java.util.Date;
import javax.swing.JOptionPane;
public class ArrayHorasMinutosSegundos {
static void sumaUnSegundo(int []hora){
hora[2]+=1;
if (hora[2]==60){
hora[1]+=1;
hora[2]=0;
if (hora[1]==60){
hora[0]+=1;
hora[1]=0;
if (hora[0]==24)
hora[0]=0;
}
}
}
public static void main(String[] args) {
int tiempo[]=new int[3]; //Array de 3 elementos: Horas, minutos y segundos
int hora,minutos,segundos;
//Completo la hora con la información que introduzca el usuario
try {
hora=Integer.parseInt(JOptionPane.showInputDialog("Horas:"));
minutos=Integer.parseInt(JOptionPane.showInputDialog("Minutos:"));
segundos=Integer.parseInt(JOptionPane.showInputDialog("Segundos:"));
//Además de comprobar que son números correctos, compruebo que están dentro de los
//límites adecuados según se trate de horas, minutos o segundos
if ((hora>=0 && hora<=23) && (minutos>=0 && minutos<=59) && (segundos>=0 && segundos<=59)){
tiempo[0]=hora;
tiempo[1]=minutos;
tiempo[2]=segundos;
} else
throw new NumberFormatException();
//Primero muestro la hora introducida por el usuario
System.out.printf("%02d:%02d:%02d\n\n",tiempo[0],tiempo[1],tiempo[2]);
//Si todo ha ido bien llamo a una función para que aumente un segundo la hora actual
sumaUnSegundo(tiempo);
//y de nuevo muestro la hora después de haber sumado un segundo
System.out.print("Resultado después de sumar un segundo: ");
System.out.printf("%02d:%02d:%02d\n",tiempo[0],tiempo[1],tiempo[2]);
} catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "Formato incorrecto");
}
}
}
</pre>
</div>José Lópezhttp://www.blogger.com/profile/00231577970161269282noreply@blogger.com0