Todo lo necesario para sobrevivir en la carrera de Ing. en Informática, Vespertino

16 jul 2007

Clase animal

POR FIN TERMINE!


El profe dejo el siguiente ejercicio que, según él, se parece a lo que va a preguntar en el examen.
  1. Construir una clase Animal que tiene como atributos(80 Ptos):

  • tipo de animal (puede ser Vaca, Gallina o Cabra)

  • producción: array de largo 30 que guardará la producción diaria del animal (se asumirá que el mes tiene 30 días y los datos se obtendrán en forma aleatoria en el rango 0 a 10 extremos inclusive)

  • valor: guardará el valor por el litro de leche o de un huevo dependiendo del caso, según la siguiente tabla :

Tipo Animal

Vaca

Gallina

Cabra

Valor

150

30

110

La clase tiene además los siguientes métodos:

  • constructor sin parámetros

  • constructor con parámetros que reciba el tipo de animal, e inicialice el array

  • accesador para tipo de animal y valor

  • método de impresión que imprima el tipo de animal, la producción diaria y el valor.

  • comer: este método aumenta la producción en un 20% de lo ingerido en el día que comió, es decir debe recibir el número del día y la cantidad comida.


Incluyo la solución para la clase Animal y al final la segunda parte del ejercicio;


/**
*
* @author Chubasco
*/

import java.io.*;

public class Animal
{
// atributos
private int tipo;
private int[] produccion; // array de largo 30 que guardará
// la producción diaria del animal
private double valor; // valor por el litro de leche o de un huevo
static final int numDias = 30; // var auxiliar

// ---------------------------------------------------------- //
/**
* Constructor
*/
// ---------------------------------------------------------- //
public Animal()
{
tipo = 0;
valor = 0;
produccion = new int[numDias];
for (int i=0; i < numDias; i++)
produccion[i]= 0;
}

// ---------------------------------------------------------- //
/**
* Constructor, recibe como parametro el tipo
* de animal según la sgte tabla
* 0 : gallina
* 1 : cabra
* 2 : vaca
*/
public Animal( int pTipoDeAnminal)
{
switch (pTipoDeAnminal) {
case(0) : tipo = 0;
valor = 30;
break;
case(1) : tipo = 1;
valor = 110;
break;
case(2) : tipo = 2;
valor = 150;
break;
} // end switch
produccion = new int[numDias];
/**
* Crea en forma aleatoria la produccion
* se escogen en forma aleatoria en el rango 0 a 10
*/
for (int i=0; i < numDias; i++){
// random()*11 = 0 - 10,999999999
produccion[i]= (int) (Math.random()*11);
} // for
} // constructor

/**
* mostrarInformacion
*/
public void mostrarInformacion() {
String info="";
System.out.print( " día : producción : " );
for (int j=0; j < this.numDias; j++) {
info = (j+1)+ ":" + this.getProduccion(j)
System.out.print( info + " / " );
} //
} // mostrarInformacion




public double getValor(){
return valor;
} // getValor





public int getTipo(){
return tipo;
} // getValor

/*
* 0 : gallina
* 1 : cabra
* 2 : vaca
*/
public String getNombreTipo(){
String retorno="";
switch (tipo) {
case(0) : retorno = "gallina";
break;
case(1) : retorno = "cabra";
break;
case(2) : retorno = "vaca";
break;
} // end switch
return retorno;
} // getValor




/**
*
*/
public int getProduccion( int dia ){
return produccion[dia];
} // getValor

// este método aumenta la producción en un 20% de
// lo ingerido en el día que comió, debe
// recibir el número del día y la cantidad comida.
public void comer( int dia, int cantComida ){
produccion[dia]=produccion[dia]+(int)(cantComida/5);
} // getValor




/**
*
*/
public int totalProduccion(){
int cp=0;

for (int i=0; i < produccion.length; i++)
cp=cp+produccion[i];
return cp;
} // totalProduccion




// verdadero si el numero es impar
private boolean esImpar( int num ) {
return ((num % 2)==1);
}





// totalGanadoDiasImpares
/**
*
*/
public double totalGanadoDiasImpares() {
double ct=0;

for (int i=0; i < produccion.length; i++) {
if ( esImpar(i+1)){ // i=0 corresponde al día 1!
ct = ct + this.getProduccion(i)*this.getValor();
} // endif
}
return ct;
} // totalGanadoDiasImpares



} // fin de la clase animal


1 comentario:

Anónimo dijo...

io la hise tambien pero m kedo la caga es muy grande el codigo...

**********************************

import java.math.*;

public class Animal
{
private String tipoDeAnimal;
private int valor=0;
private int[] arrayAnimal=new int[30];
private int n=0;//metodo totalProduccion()
private int x =0;//metodo comer()
int x1=0;//introduje estos atributos k utilizaremos para captar datos de tecla. de forma k podamos interuactar
int x2=0;//entre el main con los metodos asi podemos interferir con los metodos y los datos k entregan

public Animal()
{
}
public Animal(String tipoDeAnimal)
{
tipoDeAnimal=tipoDeAnimal;
valor=valor;

}

/**por orden nada mas*/
public void setVAnimal()
{
tipoDeAnimal="Vaca";
valor=150;
}
public void setGAnimal()
{
tipoDeAnimal="Gallina";
valor=30;
}
public void setCAnimal()
{
tipoDeAnimal="Cabra";
valor=110;
}
/**termino de los metodos para insertar valores*/

public void randomArray()
{
for(int i=0; i<30; i++)
{
int n;
do{
n = (int)(Math.round(Math.random()*10));
arrayAnimal[i]=n;
}while(n==0);
}
}
public void impresion()
{
int h=1;
System.out.println("Animal: "+tipoDeAnimal);
for (int i=0;i < arrayAnimal.length;i++)
{
System.out.println("Produccion dia "+h+": "+arrayAnimal[i]);
h=h+1;
}
}

public void comer()
{
/** no se m ocurre todavia si se ke debere captar lo k come en numeros
* como 1 o 4 o 100 sacarle el 20% indicar dia k en la posicion
* de array seria: x-1=[i] como ejemplo luego modificarlo y lito*/
int valor1=((int)(x2*0.20));
x=x1-1;
arrayAnimal[x]=arrayAnimal[x]+valor1;

}

public void totalProduccion()
{
/**aca lo unico k debo hacer es hacer un conteo osea un FOR k se pasee
* por cada casilla m valla almacenando los datos en una suma y el total
* multiplicarlo por el valor correspondiente al animal*/

for(int i=0; i<30; i++)
{
n=arrayAnimal[i]+n;
}
n=n*valor;
System.out.println("el total producido en el periodo de un mes es: "+n);
n=0;
}

public void totalGanadoDiasImpares()
{
/**buscar la ecuacion para resolver una iteracion y k sake solo impares
* por k el resto debe ser tipo par para un impar ..
* recuerden k tenemos los numeros corridos parte por el 0 no el 1
* y como el 0 es par debemos partir en orden distinto*/
for(int i=0; i<30; i++)
{
if(i%2==0)
n=arrayAnimal[i]+n;
else
n=n;

}

n=n*valor;
System.out.println("el total producido en el periodo de un mes\ndentro de los dias impares es: "+n);
n=0;
}

}


**********************************
public class App
{
public static void main(String []args)
{
int tipoDeAnimalop;
int op=0;
Animal animal=new Animal();
boolean seguir=true;


do{
System.out.println("1. Crear Animal");
System.out.println("2. Mostrar Información (mostrará el tipo de animal y su producción diaria)");
System.out.println("3. Comer");
System.out.println("4. Total Producción");
System.out.println("5. Total ganado días impares");
System.out.println("6. Salir.");
op=Leer.datoInt();
switch(op)
{
case 1:
do{
System.out.println("introdusca el tipo de animal");
System.out.println("puede escojer 3\n1.-vaca\n2.-gallina\n3.-cabra");
tipoDeAnimalop=Leer.datoInt();
if (tipoDeAnimalop==1)
{
animal.setVAnimal();
}
if (tipoDeAnimalop==2)
{
animal.setGAnimal();
}
if (tipoDeAnimalop==3)
{
animal.setCAnimal();
}
if (tipoDeAnimalop==1 || tipoDeAnimalop==2 || tipoDeAnimalop==3)
{

animal.randomArray();

System.out.println("animal creado");
}
if (tipoDeAnimalop!=1 && tipoDeAnimalop!=2 && tipoDeAnimalop!=3)
{
System.out.println("seleccion no existente, intente nuevamente");
}
}while(tipoDeAnimalop!=1 && tipoDeAnimalop!=2 && tipoDeAnimalop!=3);


break;

case 2:

animal.impresion();

break;

case 3:
System.out.println("indique el dia de alimentacion");
animal.x1=Leer.datoInt();
System.out.println("indique en cant. lo ingerido 1-100");
animal.x2=Leer.datoInt();
animal.comer();

break;

case 4:
animal.totalProduccion();

break;
case 5:
animal.totalGanadoDiasImpares();

break;
case 6:
seguir=false;
}
}while(seguir==true);
}
}
*********************************
y la class leer :D


eso seria debe tar tapao en problems xD
esta testeado y todo no presenta fallas no es tan estricto como lo k el profe pedia a lo mejor esa fue mi falla pero cumple y realiza lo k pide, como x ej: el atributo x1 y x2 para poder interferir de forma mas facil era necesario poder hacerlos publicos para su modificcion.