Utilizando un diagrama de estados, Reordenar los elementos de a[0], ..., a[n]
dejando a la izquierda los <0 y a la derecha los >=0. Resuelve este problema de 3 formas diferentes. 1.1 primera forma :
public class forma1 {
public static void main(String []args){
int []a={1,-1,0,2,4}; int n=a.length-1; int i=0; int j=n; while(i<j){ if(a[i]<0) ++i; else if(a[j]>=0){ --j;} else{ int temp=a[i]; a[i]=a[j]; a[j]=temp; i++; --j; } }
Ejercicio 2: Prueba la versin 2 del clculo de x elevado a n usando recursividad. Veremos que esta implementacin es mucho ms ptima que la de las actividades.
public class potencia{
public static void main(String[] args) {
float a =Elevar(2,3); System.out.print(a); }
public static float Elevar(float x, int n){ if(n==0) return 1;
Ejercicio 3: Implementa las Torres de Hanoi usando recursividad. import java.util.*; public class torresHanoi {
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n; System.out.println("Numero de discos: "); n = sc.nextInt(); Hanoi(n,1,2,3); // origen /auxiliar/destino }
public static void Hanoi(int n, int origen, int auxiliar, int destino){ if(n==1) System.out.println("mover disco de " + origen + " a " + destino); else{ Hanoi(n-1, origen, destino, auxiliar); System.out.println("mover disco de "+ origen + " a " + destino); Hanoi(n-1, auxiliar, origen, destino); } }} Ejercicio 4: Implementar una interfaz para componentes genricas, donde se puede ordenar enteros entregados como argumentos. package Definiciones;
public interface Comparable { public int Compare(Comparable b); } package Definiciones; final public class Entero implements Comparable { private int valor;
public Entero(int x){ valor =x; } public String toString(){ return Integer.toString(valor); } public int valorEntero(){ return valor; } public int Compare(Comparable b){ return valor-((Entero)b).valor; }
}
Ejercicio 5: Probar el ejemplo de la Clase Par (definida por el programador) public class Par { protected double a; protected double b; public Par (double x,double y){ a=x; b=y; } public Par (){ a=0; b=0; } public Par (Par x){ a=x.a; b=x.b; } public double primero(){ return a; } public double segundo(){ return b; } public boolean equals(Par x){ return a==x.a && b==x.b; } public String toString(){ return "("+a+","+b+")"; } public void primero(double x){ a=x; } public void segundo(double x){ b=x; } public void asignar(Par x){ this.a=x.a; this.b=x.b; } public static void main(String[] args) { Par p = new Par (1,2); Par q=new Par (); Par r=new Par (p); System.out.println(p.toString()); q.asignar(p); r=p; }}
Ejercicio 6: Probar el ejemplo de la Herencia de la Clase Terna
public class Terna extends Par{ protected double c; public Terna(double x,double y,double z){ super(x,y); c=z; } public Terna(){ super(); c=0; } public Terna(Terna x){ super(x); c=x.c; } public double tercero(){ return c; } public void tercero(double x){ c=x; } public void asignar(Terna x){ super.asignar(x); c=x.c; } public boolean equals(Terna x){ return super.equals(x)&& c==x.c; } public String toString(){ return "("+a+","+b+","+c+")"; } public static void main(String[] args) { Terna a=new Terna(azar(1,100),azar(1,100),azar(1,100)); System.out.println( a.toString() ); a.segundo(azar(1,100)); a.tercero(azar(1,100)); System.out.println( a.toString() );
} private static int azar(int i, int j) { Random r = new Random(); int valorDado = r.nextInt(j)+i; return valorDado; }
} Ejercicio 7: Probar el ejemplo del Polimorfismo de las Clases Par o Terna public class Par { protected double a; protected double b; public Par(double x,double y){ a=x; b=y; } public Par(){ a=0; b=0; } public Par(Par x){ a=x.a; b=x.b; } public double primero(){ return a; } public double segundo(){ return b; } public boolean equals(Par x){ return a==x.a && b==x.b; } public String toString(){ return "("+a+","+b+")"; } public void primero(double x){ a=x; } public void segundo(double x){ b=x; } public void asignar(Par x){ this.a=x.a; this.b=x.b; } public static void main(String[] args) { Par p = new Par(1,2); Par q=new Par(); Par r=new Par(p); System.out.println(p.toString()); q.asignar(p); r=p; }}
public class Terna extends Par{ protected double c; public Terna(double x,double y,double z){ super(x,y); c=z; } public Terna(){ super(); c=0; }
public Terna(Terna x){ super(x); c=x.c; } public double tercero(){ return c; } public void tercero(double x){ c=x; } public void asignar(Terna x){ super.asignar(x); c=x.c; } //componentes que se redefinen public boolean equals(Terna x){ return super.equals(x)&& c==x.c; } public String toString(){ return "("+a+","+b+","+c+")"; } public static void main(String[] args) { Terna a=new Terna(azar(1,100),azar(1,100),azar(1,100)); System.out.println( a.toString() ); a.segundo(azar(1,100)); //mtodo heredado a.tercero(azar(1,100)); System.out.println( a.toString() );
} static int azar(int i, int j) { Random r = new Random(); int valorDado = r.nextInt(j)+i; return valorDado; }}
public class poli {
public static void main(String[] args) { int a=Terna.azar(1,100), b=Terna.azar(1,100); Par p = Terna.azar(1,2)==1 ? new Par(a,b) : new Terna(a,b,Terna.azar(1,100)); System.out.println(p.toString());
}}
Ejercicio 8: Probar el ejemplo de la Clase Abstracta Par y la Clase Fraccin public abstract class CPar { protected int a, b; public CPar(int x,int y){ a=x; b=y; }
public int primero(){ return a; } public int segundo(){ return b; } public void primero(int x){ a=x; } public void segundo(int x){ b=x; } abstract public String toString(); } public class Fraccion extends CPar{ public Fraccion(int x,int y){ super(x,y); } public Fraccion suma(Fraccion x){ return new Fraccion(a*x.b+b*x.a,b*x.b); } public String toString(){ return a+"/"+b; }} public class Par1{