PDF de programación - metodología y Tecnología de la Programación - Resolución Prácticas - segunda parte

Imágen de pdf metodología y Tecnología de la Programación - Resolución Prácticas - segunda parte

metodología y Tecnología de la Programación - Resolución Prácticas - segunda partegráfica de visualizaciones

Publicado el 8 de Septiembre del 2018
458 visualizaciones desde el 8 de Septiembre del 2018
47,7 KB
7 paginas
Creado hace 15a (23/03/2009)
Metodología y Tecnología de la Programación

Resolución Prácticas (Segunda Parte) - Junio 2008

1

import java.io.*;
public class UtilVector {

/**

* Lee un vector de objetos de la clase Elemento.
* @param n El número de elementos del vector que se va a leer.
* @throws IOException Si ocurre una excepción de entrada/salida.
* @throws NumberFormatException Si el formato de algún entero no es correcto.
* @return Un vector de objetos de la clase Elemento que contiene
*
*/

los elementos leídos del teclado.

static public Elemento[] leeElemento(int n) throws IOException, NumberFormatException {

Elemento[] e = new Elemento[n];
for(int i=0;i<n;i++) e[i] = new Elemento(Util.leeEntero());
return e;

}
/**

* Lee un vector de objetos de la clase Integer.
* @param n El número de elementos del vector que se va a leer.
* @throws IOException Si ocurre una excepción de entrada/salida.
* @throws NumberFormatException Si el formato de algún entero no es correcto.
* @return Un vector de Integer que contiene los elementos leídos del teclado.
*/

static public Integer[] leeInteger(int n) throws IOException, NumberFormatException {

Integer[] e = new Integer[n];
for(int i=0;i<n;i++) e[i] = new Integer(Util.leeEntero());
return e;

}
/**

* Imprime por pantalla un vector de objetos genéricos.
* @param e El vector de objetos genéricos que se va a imprimir.
*/

static public void imprime(Object[] e) {

for(int i=0;i<e.length;i++) System.out.print(e[i]+" ");
System.out.println();

}
/**

* Ordena crecientemente los elementos del vector e.
* @param e El vector de elementos comparables que se va a ordenar.
*/

static public void ordena(Comparable[] e) {

for(int i=0;i<e.length-1;i++)

for(int j=i+1;j<e.length;j++)

if (e[j].compareTo(e[i])<0) { Comparable aux = e[j]; e[j] = e[i]; e[i] = aux; }

}
static public void main(String args[]) {

try {

Elemento[] e = leeElemento(5);
imprime(e);
ordena(e);
imprime(e);
Integer[] i = leeInteger(5);
imprime(i);
ordena(i);
imprime(i);

} catch (IOException e)
} catch (NumberFormatException e) { System.err.println(e); }

{ System.err.println(e);

}

} // fin class UtilVector

Figura 1: Clase para la utilización de vectores de objetos de las clases Elemento e Integer.

2

public class ConjuntoContiguo implements ConjuntoInterface {

private Comparable[] elem;
private int n;
public ConjuntoContiguo() { n=0; }
public ConjuntoContiguo(ConjuntoContiguo c, Comparable e) throws ConjuntoException {

n = c.n+1;
elem = new Comparable[n];
int i=n-1;
while((i>0)&&(e.compareTo(c.elem[i-1])<0)) {

elem[i] = c.elem[i-1];
i--;

}
if ((i>0)&&(e.compareTo(c.elem[i-1])==0))

throw new ConjuntoException("El elemento "+e+" ya se encuentra en el conjunto "+c);

elem[i] = e;
i--;
while(i>=0) {

elem[i] = c.elem[i];
i--;

}

}
public boolean vacio() {

return (n==0);

}
public boolean pertenece(Comparable e) {

int i=n-1;
while(e.compareTo(elem[i])<0) i--;
return (e.compareTo(elem[i])==0);

}
public ConjuntoInterface suprimeMaximo() throws ConjuntoException {

if (n==0)

throw new ConjuntoException("No se puede devolver el máximo de un conjunto vacío");

ConjuntoContiguo aux = new ConjuntoContiguo();
aux.n = n-1;
aux.elem = elem;
return aux;

}
public Comparable maximo() throws ConjuntoException {

if (n==0)

throw new ConjuntoException("No se puede devolver el máximo de un conjunto vacío");

return elem[n-1];

}
public String toString() {

String s = "";
for(int i=0;i<n;i++) s+=elem[i]+" ";
return s;

}

} // fin class ConjuntoContiguo

Figura 2: Implementación Robusta del TDA Conjunto Parcialmente Genérico con Representación Contigua.

3

public class ConjuntoEnlazado implements ConjuntoInterface {

private ConjuntoEnlazado sig;
private Comparable elem;
public ConjuntoEnlazado() {

sig=null;

}
public ConjuntoEnlazado(ConjuntoEnlazado c, Comparable e) throws ConjuntoException {

if ((c.sig==null)||(e.compareTo(c.elem)>0)) {

sig=c;
elem=e;

} else if (e.compareTo(c.elem)<0){

sig = new ConjuntoEnlazado(c.sig,e);
elem = c.elem;

}
else

throw new ConjuntoException("El elemento "+e+" ya se encuentra en el conjunto "+c);

}
public boolean vacio() {

return (sig==null);

}
public boolean pertenece(Comparable e) {

if ((sig==null)||(e.compareTo(elem)>0)) return false;
if (e.compareTo(elem)<0) return sig.pertenece(e);
return true;

}
public ConjuntoEnlazado suprimeMaximo() throws ConjuntoException {

if (sig==null)

throw new ConjuntoException("No se puede suprimir el máximo de un conjunto vacío");

return sig;

}
public Comparable maximo() throws ConjuntoException {

if (sig==null)

throw new ConjuntoException("No se puede devolver el máximo de un conjunto vacío");

return elem;

}
public String toString() {

if (sig==null) return "";
return sig+" "+elem;

}

} // fin clase ConjuntoEnlazado

Figura 3: Implementación Robusta del TDA Conjunto Parcialmente Genérico con Representación Enlazada.

public interface ConjuntoInterface {

public boolean vacio();
public boolean pertenece(Comparable e);
public ConjuntoInterface suprimeMaximo() throws ConjuntoException;
public Comparable maximo() throws ConjuntoException;

}

Figura 4: Interface del TDA Conjunto Parcialmente Genérico.

4

import java.io.*;
public class UtilConjunto{

static private void imprimeOrdenado(ConjuntoInterface c) {

// Imprime en pantalla los elementos del conjunto c ordenados decrecientemente.
try { while(!c.vacio()) { System.out.print(c.maximo()+" ");

System.out.println();

} catch(ConjuntoException e) { System.err.println(e); }

c = c.suprimeMaximo(); }

}
static public void main(String args[]) {

try {
// Construye un conjunto de la clase ConjuntoContiguo de objetos de la clase {\tt Elemento}.
// Imprime el conjunto ordenado crecientemente mediante el método toString del conjunto.
// Imprime el conjunto ordenado decrecientemente mediante el método imprimeOrdenado.
ConjuntoContiguo cc = new ConjuntoContiguo();
for(int i=0;i<5;i++) {

System.out.print("Elemento "+i+": ");
cc = new ConjuntoContiguo(cc,new Elemento(Util.leeEntero()));

}
System.out.println(cc);
imprimeOrdenado(cc);
// Construye un conjunto de la clase ConjuntoContiguo de objetos de la clase {\tt Integer}.
// Imprime el conjunto ordenado crecientemente mediante el método toString del conjunto.
// Imprime el conjunto ordenado decrecientemente mediante el método imprimeOrdenado.
cc = new ConjuntoContiguo();
for(int i=0;i<5;i++) {

System.out.print("Integer "+i+": ");
cc = new ConjuntoContiguo(cc,new Integer(Util.leeEntero()));

}
System.out.println(cc);
imprimeOrdenado(cc);
// Construye un conjunto de la clase ConjuntoEnlazado de objetos de la clase {\tt Elemento}.
// Imprime el conjunto ordenado crecientemente mediante el método toString del conjunto.
// Imprime el conjunto ordenado decrecientemente mediante el método imprimeOrdenado.
ConjuntoEnlazado ce = new ConjuntoEnlazado();
for(int i=0;i<5;i++) {

System.out.print("Elemento "+i+": ");
ce = new ConjuntoEnlazado(ce,new Elemento(Util.leeEntero()));

}
System.out.println(ce);
imprimeOrdenado(ce);
// Construye un conjunto de la clase ConjuntoEnlazado de objetos de la clase {\tt Integer}.
// Imprime el conjunto ordenado crecientemente mediante el método toString del conjunto.
// Imprime el conjunto ordenado decrecientemente mediante el método imprimeOrdenado.
ce = new ConjuntoEnlazado();
for(int i=0;i<5;i++) {

System.out.print("Integer "+i+": ");
ce = new ConjuntoEnlazado(ce,new Integer(Util.leeEntero()));

}
System.out.println(ce);
imprimeOrdenado(ce);
} catch(NumberFormatException e) { System.err.println(e);
} catch(ConjuntoException e)
{ System.err.println(e);
{ System.err.println(e); }
} catch (IOException e)

}

} // fin class UtilConjunto

Figura 5: Clase para la utilización de objetos que
implementen la interface
ConjuntoInterface. Particularmente, utilizará objetos de las clases ConjuntoContiguo y
ConjuntoEnlazado.

5

public class Consultorio {

private class Celda {

private String paciente;
private Celda sig;

}
private Celda[] frente,post;
private String medico[], especialidad[];
public Consultorio(int n, String[] med, String[] esp) throws ConsultorioException {

if (n<=0) throw new ConsultorioException("El número de consultas debe ser mayor que cero");
if (med.length!=n) throw new ConsultorioException("Tamaño de med incorrecto");
if (esp.length!=n) throw new ConsultorioException("Tamaño de esp incorrecto");
frente = new Celda[n];
post = new Celda[n];
medico = new String[n];
especialidad = new String[n];
for(int i=0;i<n;i++) { frente[i] = new Celda();

post[i] = frente[i];
medico[i] = med[i];
especialidad[i] = esp[i]; } }

public String medico(int i) throws ConsultorioException {

if ((i<1)||(i>frente.length)) throw new ConsultorioException("Índice de consulta incorrecto");
if (i>frente.length) throw new ConsultorioException("i mayor que "+frente.length);
return medico[i-1]; }

public String especialidad(int i) throws ConsultorioException {

if ((i<1)||(i>frente.length)) throw new ConsultorioException("Índice de consulta incorrecto");
return especialidad[i-1]; }

public void insertaPaciente(int i, String p) throws ConsultorioException {

if ((i<1)||(i>frente.length)) throw new ConsultorioException("Índice de consulta incorrecto");
post[i-1].sig = new Celda();
post[i-1] = post[i-1].sig;
post[i-1].paciente = p; }

public void suprimePaciente(int i) throws ConsultorioException {

if ((i<1)||(i>frente.length)) throw new ConsultorioException("Índice de consulta incorrecto");
if (frente[i-1]==post[i-1]) throw new ConsultorioException("La consulta "+i+" está vacía.");
frente[i-1]=frente[i-1].sig; }

public String primerPaciente(int i) throws ConsultorioException {

if ((i<1)||(i>frente.length)) throw new ConsultorioException("Índice de consulta incorrecto");
if (frente[i-1]==post[i-1]) throw new ConsultorioException("La consulta "+i+" está vacía.");
return frente[i-1].sig.paciente; }

public boolean vacia(int i) throws ConsultorioException {

if ((i<1)||(i>frente.length)) throw new
  • Links de descarga
http://lwp-l.com/pdf13411

Comentarios de: metodología y Tecnología de la Programación - Resolución Prácticas - segunda parte (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad