Diferencia entre revisiones de «Usuario:ManuelRomero/practica 3»

De WikiEducator
Saltar a: navegación, buscar
(Adivina numero)
Línea 231: Línea 231:
 
             Random rnd = new Random();
 
             Random rnd = new Random();
 
             for (int i=0;i<10;i++){
 
             for (int i=0;i<10;i++){
             a = (int)(rnd.nextDouble() * 100);
+
             a = 1+(int)(rnd.nextDouble() * 100);
 
             System.out.println("Valor de a "+a);
 
             System.out.println("Valor de a "+a);
 
             }
 
             }
 
       }
 
       }
 
}
 
}
 +
</source>
 +
 +
Un posible código del programa
 +
<source lang=java>
 +
import java.util.Random;
 +
import java.util.Scanner;
 +
public class Adivina {
 +
      public static void main(String arg[]) {
 +
          //Defino variables 
 +
      int numeroAdivinar;
 +
          int intentos=0;
 +
          int numeroUsuario;
 +
          Scanner leer = new Scanner(System.in);
 +
 +
          //Inicializo la semilla;
 +
          Random rnd = new Random();
 +
 +
          System.out.println("Vamos a ver si adivinas un número entre 1 y 1000");
 +
          System.out.println("Tienes 10 intentos");
 +
           
 +
          //Genero el número aleatorio emtre 1 y 10
 +
          numeroAdivinar = 1+(int)(rnd.nextDouble() * 100);
 +
          //Iteraciones hasta que encuentre el número o agote intentos
 +
          do{
 +
          System.out.println("Te quedan "+(10-intentos)+" intentos  de los 10 iniciales para adivinar el número ");
 +
    numeroUsuario=leer.nextInt();
 +
    if (numeroUsuario<numeroAdivinar)
 +
    System.out.println("El número es mayor");
 +
    if (numeroUsuario>numeroAdivinar)
 +
        System.out.println("El número es menor");
 +
    intentos++;
 +
  }while ((numeroUsuario!=numeroAdivinar) &&(intentos<10));
 +
           
 +
        //Informo del resultado
 +
        if (numeroUsuario==numeroAdivinar)
 +
          System.out.println("Has adivinado el número en "+ intentos+" intentos");
 +
else
 +
    System.out.println("No lo Has adivinado.  el número era "+ numeroAdivinar);
 +
       
 +
  }//end main
 +
}//End clase
 
</source>
 
</source>
  

Revisión de 05:25 17 abr 2012






Icon reflection.gif

Reflexión

  1. Realízalos de forma tranquila y cómoda, son sencillos
  2. aprovéchalos para afianzar conceptos.
  3. Consulta cualquier duda y puedes proponer alguna modificación e intentar realizarla.



Estrucutras secuenciales , condicionales, bucles

Ordernar1

Un programa que me pida dos números y me los visualice ordenados

 import java.util.Scanner;
 class Ordenar1{
   public static void main(String []lista){
     Scanner leer = new Scanner(System.in);
     int n1,n2;
     System.out.println("Inserta dos números a ordenar");
     n1 = leer.nextInt();
     n2 = leer.nextInt();
     if (n1> n2)
        System.out.println(n1 +" "+n2);
     else
        System.out.println(n2 +" "+n1);
   }//End main
 }//End Odenar1

Ordenar2.java

Qué pida tres números y visualice ordenados

import java.util.Scanner;
 
public class Ordena3{
 public static void main(String []lista){
   Scanner leer = new Scanner(System.in);
   int n1,n2,n3;
 //En lugar de sacar tres mensajes sólo uno 
 //y escribilos los tres números separados por espacion
  System.out.println("Inserta los números a ordenar separados por espacios, al final intro");
 n1 = leer.nextInt();
 n2 = leer.nextInt();
 n3 = leer.nextInt();
 //Vamos a dejar en n1 el más grande, en n2 el mediano y en n3 el pequeño
 
 //ahora comparamos n2 y n1 y luego n3 y n1, y así en n1 tenemos seguro el mayor
 if (n2> n1){
    int a=n1;
    n1=n2;
    n2=a;
 }
 
 if (n3>n1){   
    int a=n1;
    n1=n3;
    n3=a;
 }
 
 //Ahora que tenemos en n1 el mayor dejamos en n2 el mediano
 if  (n3>n2){
     int a=n2;
     n2=n3;
     n3=a;
 }
 
  System.out.println(n1 +" "+n2+" "+n3);
 }//End main
}//End la clase

Ordena 3 números

Otra forma de hacerlo (hay muhcas más) En este caso en cuanto tenemos los números ordenados lo visualizamos no he puesto llaves dentro de los if-else, ya que solo hay una instrucción en cada uno de ellos

import java.util.Scanner;
 
public class Ordena4 {
  public static void main(String []lista){
     Scanner leer = new Scanner(System.in);
     int n1,n2,n3;
     //En lugar de sacar tres mensajes sólo uno y escribilos los tres números separados por espacion
     System.out.println("Inserta los números a ordenar separados por espacios, al final introoo");
     n1 = leer.nextInt();
     n2 = leer.nextInt();
     n3 = leer.nextInt();
     //Vamos a dejar en n1 el más grande, en n2 el mediano y en n3 el pequeño
     //Ahora vamos visualizando según vayamos encontrando los casos
     //Tenemos 6 casos posibles de ordenación (factorial del número de elementos a ordenar)
     System.out.println("n1= "+n1 +" n2=  "+n2+" n3=  "+n3);
     if (n1> n2){
 	if(n2>n3)
   	   System.out.println(n3 +" "+n2+" "+n1);
	else
	   if (n1>n3)
	      System.out.println(n2 +" "+n3+" "+n1);
           else
	      System.out.println(n2 +" "+n1+" "+n3);
    else
	if(n1>n3)
	   System.out.println(n3 +" "+n1+" "+n2);
        else
           if (n2>n3)
	      System.out.println(n1 +" "+n3+" "+n2);
    	   else
	      System.out.println(n1 +" "+n2+" "+n3);
   }//End main
}//End la clase

OrdenarNombre

Que me pida dos nombres y los visualice ordenados

import java.util.Scanner;
public class Nombres {
	public static void main(String[] args) {
		String n1,n2;
		Scanner l1=new Scanner(System.in);
		System.out.println("Inserta un nombre");
		n1=l1.nextLine();
		System.out.println("Inserta otro nombre");
		n2=l1.nextLine();
		if (n1.compareTo(n2)<0)
			System.out.println(n1+" - "+n2);
		else
			System.out.println(n2+" - "+n1);
	}
}

Tabla de multiplicar

  • Te pide un número y visualizas la tabla de multiplicar
  • Iteramos hasta que inserten 0 como tabla a visualizar
  • Observar que se puede concatenar como un string el resultado de una operacion aritmética
 System.out.println(tabla+"*"+i+"="+(tabla*i));
tabla*i es una operacion, y se concatena el resultado
import java.util.Scanner;
public class Multiplicar {
 public static void main(String []l){
    int tabla;
    Scanner leer = new Scanner(System.in);
    System.out.println("Inserta un número para obtener la tabla (0 terminar)");
    tabla=leer.nextInt();
    while (tabla!=0){
	for (int i=1;i<=10;i++)
	    System.out.println(tabla+"*"+i+"="+(tabla*i));
	System.out.println("Inserta un número para obtener la tabla (0 terminar)");
	tabla=leer.nextInt();
    }//end while
 }//End main
}//End clase

Grados

Un programa que me pida grados centígrados y los viualiza en Farhenheit y en Kelving. la equivalencia es la siguiente Bucles

class Grados{
}

cuenta pares e impares

Introducimos 10 números y me dicen cuantos hay pares y cuantos impares

class CuentaPares{
}

dígitos

Dado un número entero, que me diga cuantos dígitos tiene (cuantas veces es divisible por 10…

class Digitos{
}

medias

Que me pida números hasta que introduzca el 0 y me calcule la media, el mayor y el menor de la lista de números insertados

class Medias{
}

Valida fecha

Que le introduzca una fecha (tres enteros: dia, mes y año) y me indique si la fecha es o no correcta. En caso de que no sea correcta que me diga por qué motivo no lo es

class ValidaFecha{
}

primo

Que introduzca un número y me diga si es o no primo

class Primo{
}

Ecuación de 2º grado

  • dada una ecuación de segundo grado del tipo ax2 + bx + c = 0
  • donde a, b y c son coeficientes numéricos que se introducirán al programa,
  • encontrar valores que satisfagan el valor de x. La ecuación que me da los valores es (-b±√(b^2-4*a*c))/(2*a)
  • Observamos que si la parte del radicando es negativa no se puede hacer la raíz.
  • si a es 0 en realidad estamos ante una ecuación de primer grado bx+c=0 donde x =(-c)⁄b
  • En el caso del radicando negativo puedes decir que no hay solución o dar solución acudiendo a los números complejos √(-n)=√n*√(-1)=√n*i
class Ecuacon2Grado{
}

Factores

Descomponer un número en sus factores p.e 56 =2*2*2*7

class Factores{
}

Nomina

  • Un programa que realice nóminas siguiendo las siguientes especificaciones, ya realizado en clase:
  • Por el teclado se introducen: Horas, precio hora y Nombre y número de hijos
  • Cuando el nº de horas semanales trabajadas es <= 40 se consideran horas normales.
  • Entre 40 y 50 horas son extraordinarias.
  • Más de 50 horas se consideran especiales
  • Las horas extras se pagan a 1.5 las normales.
  • Las horas especiales se pagan a 1.80 veces las normales
  • Los impuestos se pagan de acuerdo con:
  • Si el sueldo es <= 600 euros está libre de impuestos para la mayoría de los casos.
  • Los 100 euros siguientes cotizan el 15%.
  • El resto 25%
  • Sólo si te sientes cómodo y cuando la parte anterior funciones, puede probar a añadir a tu software este nuevo requisito
    • Los porcentajes con número de hijos se modifican de la siguiente manera
    • Por cada hijo 15% menos (al porcentaje, no al total). El máximo que se puede descontar es el total de los impuestos a tratar
class Nomina{
}


Arrays nombres

Inserto hasta diez nombres y los voy colocando de forma ordenada. Al final se visualizan los nombres ordenados

class Nombre{
}

Adivina numero

  • el sistema generará un número de 1 a 100 o a 1000
  • te deja un número de intentos para adivinarlo
  • cada vez que digas un número te dirá si es mayor o menor y número de intentos que llevas.
  • Al final o lo has adivinado o has agotado el número de intentos

Para ejemplo vemos el siguiente programa que genera numéros 1 1 a 100

import java.util.Random;
public class Programa{
      public static void main(String arg[]) {
            int a;
            Random rnd = new Random();
            for (int i=0;i<10;i++){
            	a = 1+(int)(rnd.nextDouble() * 100);
            	System.out.println("Valor de a "+a);
            }
      }
}

Un posible código del programa

import java.util.Random;
import java.util.Scanner;
public class Adivina {
      public static void main(String arg[]) {
          //Defino variables  
    	  int numeroAdivinar;
          int intentos=0;
          int numeroUsuario;
          Scanner leer = new Scanner(System.in);
 
          //Inicializo la semilla;
          Random rnd = new Random();
 
          System.out.println("Vamos a ver si adivinas un número entre 1 y 1000");
          System.out.println("Tienes 10 intentos");
 
          //Genero el número aleatorio emtre 1 y 10 
          numeroAdivinar = 1+(int)(rnd.nextDouble() * 100);
          //Iteraciones hasta que encuentre el número o agote intentos
          do{
       	     System.out.println("Te quedan "+(10-intentos)+" intentos  de los 10 iniciales para adivinar el número ");
	     numeroUsuario=leer.nextInt();
	     if (numeroUsuario<numeroAdivinar)
	     	System.out.println("El número es mayor");
	     if (numeroUsuario>numeroAdivinar)
 	        System.out.println("El número es menor");
	     intentos++;
	  }while ((numeroUsuario!=numeroAdivinar) &&(intentos<10));
 
         //Informo del resultado
         if (numeroUsuario==numeroAdivinar)
       	    System.out.println("Has adivinado el número en "+ intentos+" intentos");
	 else
	    System.out.println("No lo Has adivinado.  el número era "+ numeroAdivinar);
 
  }//end main
}//End clase

Generado de password

Programa de generador aleatorio de password (debe generar password de 8 caracteres y tienen que contener entre 4 y 6 números entre 2 y 3 letras y 0 o 2 carecteres especiales ” ¡@#%$_|?¿” La clave generada que la visualice por patalla usando showMessageBox, después aparecerá una patalla para cambiarla, me pedirá que la introduzca 2 veces y luego me permitirá introducir la nueva, al final me informará de clave cambiada correctamente.

class GenPasswd{
}

Clases

una clase llamada calculadora con dos números y que haga suma restas divisiones y multiplicaciones. Las operaciones igual de las vistas con el racional operan con los números del objeto.

Calculadora calculo = new Calculadora (4,5);
calculo.sumar()  4+5=9;
calculo.resta() 4-5=-1
calculo.division() 4/5=0,80
calculo.multiplica  4*5=20

class Calculadora{
}

Cuenta corriente

Realiza una clase llamada

public class CuentaBancaria

tendrá tres atributos (saldo, totalCuentas (static), riesgo (static, cantidad de dinero que se permite en estas cuentas)

private double saldo;
public static int totalCuentas=0;
private double riesgo ; //Cantidad de dinero que puede haber en número negativos

Ene el constructor

inicializamos las variables saldo =riesgo=0, numCuentas =1
opcionalmente se puede pasar  saldo  o saldo y riesgo

Tendremos implementados los siguientes métodos

public double saldo()
public void ingreso(floata cantidad)
public void extracion(floata cantidad) /Validamos el sueldo /riesgo
public static void incCuentas () 
public void transferencia( CuentaBancaria origen, float cantidda )
  En caso de que haya saldo pasaremos dinero de una cuenta a otra

Realizar un programa principal que use esta clase

creamos 4 cuentas 
hacemos ingresos y reintegros
realizamos al menos 2 transferenicas una permitida y otra no
realizamos un ingreso para que nos la permita hacer.
comprobar el valor de número de cuentas.

Siwng

Un programa que usando en el BorderLayout y que ponga los siguientes objetos norte 2 Label en forma de flowlayout Centro poner 5 botones con un BorderLayout Este 1 caja de texto Oeste 1 caja de texto Sur 4 botones FlowLayout La ventana que aparezca maximizada Que no se puede redimensionar Poner un título Que no se pueda cerrar

class {
}


Swing y eventos

hacer el programa de cambio de grados de forma gráfica
class eventos


El juego del ahorcado