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

De WikiEducator
Saltar a: navegación, buscar
(dígitos)
(medias)
Línea 223: Línea 223:
 
==medias==
 
==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
 
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{
+
import java.util.Scanner;
  }
+
<source lang=java>
 +
public class Medias {
 +
public static void main(String []a){
 +
  Scanner leer = new Scanner(System.in);
 +
int n,suma,min,max,cuenta;
 +
//inicilizo
 +
cuenta=0;
 +
suma=0;
 +
System.out.println("Inserta un número");
 +
n=leer.nextInt();
 +
min = n;
 +
max =n;
 +
//Empiezo el bucle
 +
while (n!=0){
 +
      if (min>n){
 +
  int aux = min;
 +
  min = n;
 +
  n=aux;
 +
      }
 +
      if (max<n){
 +
  int aux = max;
 +
  max = n;
 +
  n=aux;
 +
      }
 +
      suma=suma+n;
 +
      cuenta++;
 +
      System.out.println("Inserta un número");
 +
      n=leer.nextInt();
 +
}//End while
 +
System.out.println("Estadísticas de  "+cuenta+" numeros.\n Media: "+((float)suma/cuenta)+"\tMaximo "+max+"\tMínimo "+min);
 +
}//End main
 +
}//End clase
 +
 
 
==Valida fecha==
 
==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
 
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

Revisión de 02:52 18 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(nclass Calculadora{
 
 }class Calculadora{
 
 }class Calculadora{
 
 }class Calculadora{
 
 }1 +" "+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

centígrados 0 100
Fahrenheit 32 212
Kelvin 273 373
import java.util.Scanner;
public class Grados {
  public static void main(String[] args) {
    Scanner leer = new Scanner(System.in);
    float centigrados;
    System.out.println("Dame grados Centígrados");
    centigrados= leer.nextFloat();
    //Informo en Fahrenheit de los grados centrígrados
    //C-F (180/100 y +32) F-C ( -32 y 100/180)
    System.out.println(centigrados+" C = "+(centigrados*1.8+32)+" Fahrenheit y "+(centigrados+273)+" Kelvin" );
	}
}

cuenta pares e impares

  • Introducimos 10 números y me dicen cuantos hay pares y cuantos impares
  • Solo utilizamos contamos los pares.
  • El número de impares lo obtenemos como 10-numero de pares
import java.util.Scanner;
public class CuentaPares {
  public static void main(String []l){
	Scanner leer = new Scanner(System.in);
	int numero;
	int cuentaPares=0;
	for (int i=0; i<10;i++){
	    System.out.println("Inserta un número ");
	    numero = leer.nextInt();
	    if (numero%2==0)
	 	cuentaPares++;
	    }//End for
	System.out.println("Has insertado "+cuentaPares+" numeros pares  y "+(10-cuentaPares)+" numeros impares");
 }//End main
}//End clase

dígitos

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

import java.util.Scanner;
public class Digitos {
 public static void main(String[] args) {
	Scanner leer = new Scanner(System.in);
	int n, aux;
	int digitos=1;
	n=leer.nextInt();
	aux=n;
	while ((aux/10)!=0){
		aux=aux/10;
		digitos++;
	}
	System.out.println("El número "+aux+" tiene "+digitos+" dígitos");
 }
}

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 import java.util.Scanner;

public class Medias {
public static void main(String []a){
 Scanner leer = new Scanner(System.in);
 int n,suma,min,max,cuenta;
 //inicilizo
 cuenta=0;	
 suma=0;
 System.out.println("Inserta un número");
 n=leer.nextInt();
 min = n;
 max =n;
//Empiezo el bucle
 while (n!=0){
       if (min>n){
	  int aux = min;
	  min = n;
	  n=aux;
       }
       if (max<n){
	  int aux = max;
	  max = n;
	  n=aux;
       }
       suma=suma+n;
       cuenta++;
       System.out.println("Inserta un número");
       n=leer.nextInt();
 }//End while
 System.out.println("Estadísticas de  "+cuenta+" numeros.\n Media: "+((float)suma/cuenta)+"\tMaximo "+max+"\tMínimo "+min);
}//End main
}//End clase
 
==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
 
<source lang=java>
import java.util.Scanner;
public class ArrayOrdenado {
 
// Defino la función buscarPosción que me dice la posicion 
//que le corresponde a un nombre n en un array de nombres l donde tengo longitud nombres
  public static int buscarPosicion(String n, String[] l, int longitud){
	boolean encontrado=false;
	int pos =0;
	while((encontrado==false) && (pos <longitud))
     	     if (l[pos].compareTo(n)>0)
		encontrado=true;
    	     else
		pos++;
  return pos;
}//Fin de buscarPosición
 
public static void main (String []lista){
        String[] listaNombres = new String[10];
	Scanner leer = new Scanner(System.in);
	String nombre;
 
	//Voy a pedir 10 nombres y cada nombre lo coloco ordenadamente en el vector
        //Tener cuidado que diferencia mayúsculas de minúsculas
	for (int i=0; i<10;i++){
	    System.out.println("Inserta un nombre");
  	    nombre=leer.next();
	    int pos = buscarPosicion(nombre, listaNombres,i);
            //Visualiza es simplemente para ir viendo las cosas según la va haciendo, se puede quitar
	    visualiza (listaNombres,nombre,i);
            //Una vez que he encontrado la posición del nombre en el vector, lo coloco
            //Y muevo todos los nombres una posición ayudado por un auxiliar
   	    for (int a = pos; a<=i; a++){
	 	String aux = listaNombres[a];
		listaNombres[a]=nombre;
		nombre = aux;
	    }
	}//End for
 
//Ahora visualizo el vector ordenado
	System.out.println("Vector ordenado");
	for (int i=0; i<10;i++){
		System.out.println(listaNombres[i]);
	}
}//End main
public static void visualiza(String[]l,String n, int i){
	System.out.println("Buscando "+n+" en el vector ");
	for (int a = 0; a<i;a++)
	    System.out.print(l[a]+"-");
	}//End visualiza
}//End de la clase

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.

 
import java.util.Random;
 
public class Password {
     //Atributos de la clase = Variables globales para todos los        
     //métodos
     static Random generador = new Random();
 
/*
 * Rellena el vector de password con 'num' números 
 * a partir de la posicion posIni
 * @param p Array de caracteres que contiene la password
 * @param num numero de caracteres letraselegidos al hazar
 *            de un vector de caracteres especiales  
 * @param posIni posición a partir de la cual relleno el vector
 */
 public static void rellenaNumeros(char []p,int num, int posIni){
	for (int i=posIni;i<(num+posIni); i++){
  	     int n = generador.nextInt(10);
	     p[i]=Character.forDigit(n,10);
	}
 }//End rellenaNumeros
 
/*
 * Rellena el vector de password con 'num' letras 
 * a partir de la posicion posIni
 * @param p Array de caracteres que contiene la password
 * @param num numero de caracteres letraselegidos al hazar
 *            de un vector de caracteres especiales  
 * @param posIni posición a partir de la cual relleno el vector
 */
 public static void rellenaLetras(char []p,int num, int posIni){
	for(int i=posIni;i<(num+posIni);i++){
  	   int n = generador.nextInt(52);
	   if (n<26) //letras mayúsculas A..Z
	      p[i]=(char)((int)'A'+n);
	   else
	      p[i]=(char)((int)'a'+(n-26));
	}
}//End rellenaLetras
 
/*
 * Rellena el vector de password con 'num' caracteres especiales
 * a partir de la posicion posIni
 * @param p Array de caracteres que contiene la password
 * @param num numero de caractres especiales elegidos al hazar
 *            de un vector de caracteres especiales  
 * @param posIni posición a partir de la cual relleno el vector
 */
 public static void rellenaEspeciales(char []p,int num, int posIni){
   char[]esp= {'!','$','@','?','¿','%','*','Ç','-'};
//Tenemos 9 caracteres. generamos un valor 0.8 y tomo ese caracter
   for(int i=posIni;i<(num+posIni);i++){
      int n = generador.nextInt(9);
      p[i]= esp[n];
   }
 }//End rellenaEspeciales
 
//Definimos un vector de caracteres
 public static void main (String []l){  
	int numLetras;
	int numNumeros;
	int numEspeciales;
	char []pass = new char[8];
 
	//Generamos número de caracteres de cada tipo
	numNumeros=4+generador.nextInt(3);//(valor entre 4 y 6)
	if (numNumeros == 6)
	   numLetras = 2;
	else
	   numLetras =2+generador.nextInt(2);//(valor entre 2 y 3)
	numEspeciales =8-(numLetras+numNumeros);
 
	rellenaNumeros(pass,numNumeros,0);
	rellenaLetras(pass,numLetras,numNumeros);
	rellenaEspeciales(pass,numEspeciales,numNumeros+numLetras);
 
	//Visualizo el resultado
	System.out.print("Password: ");
	for (int i=0; i<8;i++){
	    System.out.print(pass[i]);
	}
  }//Fin del main
}//Fin de la clase

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
import java.util.Scanner;
public class UsoOrdenar {
	public static void main(String []a){
		Calculadora c = new Calculadora ();
		boolean seguir = true;
		while (seguir == true){
			System.out.println("Dame dos numeros");
			c.setNum1(leer.nextInt());
			c.setNum2(leer.nextInt());
 
			System.out.println(c.getNum1()+"+"+c.getNum2+"="+c.sumar());
			System.out.println(c.getNum1()+"-"+c.getNum2+"="+c.restar());
			System.out.println(c.getNum1()+"*"+c.getNum2+"="+c.multiplicar());
			System.out.println(c.getNum1()+"/"+c.getNum2+"="+c.dividir());
			System.out.println("Seguir");
			seguir = leer.nextBoolean();
 
 
		}
	}
 
	}

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