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.
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:
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.
Publicar un comentario