Java: Programa para guardar número de caballos en un vehículo

Estado

🔒 Este tema está cerrado para nuevas respuestas.

⏰ Solo el creador del tema puede solicitar la reapertura de sus propios temas, pero únicamente dentro de los 60 días previos a la última actualización.

josedvd123 Seguir

Gamma
Social Media
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
13 Feb 2013
Mensajes
209
Buenas a todos,
Estoy estudiando programación Java pero aun soy muy novato y me han pedido que de tarea tengo que hacer una aplicación en Java.

El ejercicio dice:

Haced un programa que permita introducir los caballos que tiene un vehículo, y guardarlos en un array (controlad la entrada de datos, no sirve que aceptemos caballos negativos o cero…). La entrada de datos finalizará
cuando los caballos de un vehículo sean -2.

Después de leer todos los números, el programa debe mostrar un conjunto
de opciones, que serán las siguientes:
· Máximo: se debe mostrar el vehículo que tiene más caballos (número de caballos y posición del array)
· Mínimo: se debe mostrar el vehículo que tiene menos caballos (número de caballos y posición del array)
· Multiplicar: se deben de multiplicar los caballos por dos.
· Relación caballos/peso. El programa debe decir cuántos vehículos cumplen que la relación de dividir el peso (siempre será 1000Kg) por los caballos sea inferior a 8.

Un ejemplo de el funcionamiento del programa:


Introducimos números:
10
33
-2

Mostramos menú: Que desea hacer? 1.-máximo, 2.-mínimo, 3.-multiplicar, 4-relación caballos peso, 5.-salir
Introducimos un 3 (multiplicamos por dos todos los valores del array, por lo que tendríamos ahora 20, 66)

Mostramos menú: Que desea hacer? 1.-máximo, 2.-mínimo, 3.-multiplicar, 4-relación caballos peso, 5.-salir
introducimos un 2.Programa:El mínimo es 20 y está en la posición 0

Mostramos menú: Que desea hacer? 1.-máximo, 2.-mínimo, 3.-multiplicar, 4-relación caballos peso, 5.-salir
introducimos un 3 (multiplicamos por dos todos los valores del array, por lo que tendríamos ahora 40, 132)

Mostramos menú: Que desea hacer? 1.-máximo, 2.-mínimo, 3.-multiplicar, 4-relación caballos peso, 5.-salir
introducimos un 4. Programa: Un vehículo cumple la relación caballos-peso.(peso dividido por caballos, lo dice el enunciado)

Mostramos menú: Que desea hacer? 1.-máximo, 2.-mínimo, 3.-multiplicar, 4-relación caballos peso, 5.-salir
introducimos 5. Programa: gracias por usar el software (y se cierra)

Aquí esta el código que he podido realizar.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class prueva4{

public static void main (String args[]) {
int v=4;
int num=0;
int[] caballos = new int[v];
int iNumeroMayor,iNumeroMenor=0, iPosicionm=0, iPosicion;

//Presuponemos que el numero mayor es el primero
iNumeroMayor = caballos[0];
iPosicion = 0;


for (int i=0;i<v;i++){
try {
System.out.println("Cuantos caballos tiene el vehiculo?");
String linea1=System.console().readLine();
num=Integer.parseInt(linea1);
caballos=num;
} catch(Exception e){
//Control de errores
System.out.println("Error: Solo se pueden insertar numeros.");
}}

//Recorremos los demas para ver si hay alguno mayor
//En tal caso sustituiremos el numeroMayor por el nuevo valor
//Y la variable posicion por el numero del elemento del array
//en el que estemos

for (int x=1;x<v;x++){

if (caballos[x]>iNumeroMayor){
iNumeroMayor = caballos[x];
iPosicion = x;
}
}


iNumeroMenor=iNumeroMayor;
for (int j=0;j<v;j++){
if (caballos[j]<iNumeroMenor){
iNumeroMenor = caballos[j];
iPosicionm = j;
}
}

System.out.println("El numero mayor encontrado es " + iNumeroMayor);
System.out.println("Y se encuentra en la posicion " + iPosicion);
System.out.println("El numero menor encontrado es " + iNumeroMenor);
System.out.println("Y se encuentra en la posicion " + iPosicionm);

}
}
..............................................
Para multiplicar los caballos por 2 creo que tendría que hacer un: caballos*=caballos ya que el programa tiene que multiplicarlos por dos y guardar el resultado.
Mis dudas:
Como hago para que el programa permita poner números asta que uno escriba el -2.
Como hago para que cuando uno escriba un numero negativo salga un error?
Como puedo crear un menú como en el ejemplo?
y la relación entre Relación caballos/peso no la entiendo :S tampoco se como hacerla :S

Si alguien me pudiera ayudar estaría muy agradecido :encouragement:
 

Nikola

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
9 Oct 2013
Mensajes
8
Como hago para que el programa permita poner números asta que uno escriba el -2.
Como hago para que cuando uno escriba un numero negativo salga un error?

Para hacer esto puedes hacer un ciclo while o do while, yo prefiero el do while, y lo del error es facil ya que solo debes validar lo que te estan dando de entrada

Insertar CODE, HTML o PHP:
// Numero de caballos
int num = 0;
// Arreglo de caballos
int [] caballos;
// Indice para llevar la cuenta en que posicion del arreglo de caballos
int i = 0;
// Arreglo temporal para mover los caballos ya capturados a un nuevo arreglo de mayor dimension
int [] caballosMov;

do {
try{
System.out.println("Cual es el numero de caballos del vehiculo?");
String linea1=System.console().readLine();
num=Integer.parseInt(linea1);

// Si el numero es mayor a cero
if(num > 0) {

// Se prepara el arreglo para mover a los caballos anteriores (En la primera corrida la i = 0)
caballosMov = new int[i];

// Se mueven los caballos al arreglo temporal
for(int j=0; j<caballosMov.length; j++) {
caballosMov[j] = caballos[j];
}

// Se crea el arreglo con una nueva dimension (uno mas)
caballos = new int[i + 1];
// Se guarda el nuevo valor (En este punto el arreglo solo contiene ceros y el numero que se acaba de capturar)
caballos[i]=num;
// Se incrementa la posicion
i++;
// Se mueven los caballos anteriores al nuevo arreglo
for(int j=0; j<caballosMov.length; j++) {
caballos[j] = caballosMov[j];
}
}
else {
// Mensaje de error
System.out.println("Error: El numero numero de caballos es incorrecto");
}
}
catch(Exception e) {
System.out.println("No es un numero entero");
}
}while(num != -2);

Y lo demás te lo dejo de tarea ;)
 

josedvd123

Gamma
Social Media
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
13 Feb 2013
Mensajes
209
Bueno voy a cerrar este tema ya que pude realizar el código :encouragement:
El código correcto es este:
Insertar CODE, HTML o PHP:
/*
 * prueva4.java
 * 
 * Copyright 2013 Jose David <Jose David@JOSEDAVID-PC>
 * 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301, USA.
 * 
 * 
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class prueva4{
	
	public static void main (String args[]) {
		int v=0;
		int tam=200;
		float relacion=0;
		int t=0;
		int num=0;
		int opt=0;
		int optx=0;//quitar
		int[] caballos=new int[tam];
        int iNumeroMayor=0,iNumeroMenor=0, iPosicionm=0, iPosicion;
           
                //Presuponemos que el numero mayor es el primero
                
                iPosicion = 0;
           
           
       
		try {
			System.out.println("Cuantos caballos tiene el vehiculo?");
			//for (int i=0;i<v;i++){
			do{
			String linea1=System.console().readLine();
			num=Integer.parseInt(linea1);
			if(num==-2){
				t=1;
			}else{
				caballos[v]=num;
				//i++;
				v++;
				//caballos=new int[v+1];
				}
			}while(t==0);
		    
		    iNumeroMayor = caballos[0];
		    iNumeroMenor = caballos[0];
		    do{
			System.out.println("Menu");
			System.out.println("1. Maximo");
			System.out.println("2. Minimo");
			System.out.println("3. Multiplicar");
			System.out.println("4. Relacion caballo peso");
			System.out.println("5. Salir");
			
			String op=System.console().readLine();
			opt=Integer.parseInt(op);
		    
			//mayor
			if(opt==1){
				for (int x=0;x<v;x++){
					 if (caballos[x]>iNumeroMayor){
					   iNumeroMayor = caballos[x];
					   iPosicion = x;
					 } 
				   }
				   System.out.println("El numero mayor encontrado es " + iNumeroMayor); 
				   System.out.println("Y se encuentra en la posicion " + iPosicion);
			} 
			//menor
			if(opt==2){
				iNumeroMenor=caballos[0];
				for (int x=0;x<v;x++){
					 if (caballos[x]<iNumeroMenor){
					   iNumeroMenor = caballos[x];
					   iPosicionm = x;
					 } 
				   }
				 System.out.println("El numero menor encontrado es " + iNumeroMenor);
           System.out.println("Y se encuentra en la posicion " + iPosicionm); 
			} 
			
			//Multiplicar
			if(opt==3){
				for (int x=0;x<v;x++){
					
					   caballos[x]=caballos[x]*2;
					   //System.out.println("xxx "+caballos[0]+" xxx");
					   //String opx=System.console().readLine();
						//optx=Integer.parseInt(opx);
						
					
				   }
			} 
			
			//relacion caballo/peso
			if(opt==4){
				for (int x=0;x<v;x++){
					relacion=caballos[x]/1000;
					if(relacion<8){
						System.out.println("El coche en la posicion "+x+" cumple con la condicion ");
						}
					
				   }
			} 
			
			
			}while(opt!=5);
			
		}catch(Exception e){
		//Control de errores
			System.out.println("Error: en los datos.");
		}
           
                //Recorremos los demas para ver si hay alguno mayor
           //En tal caso sustituiremos el numeroMayor por el nuevo valor
           //Y la variable posicion por el numero del elemento del array
           //en el que estemos
           
           
           
           
           
	}
}
 
Estado

🔒 Este tema está cerrado para nuevas respuestas.

⏰ Solo el creador del tema puede solicitar la reapertura de sus propios temas, pero únicamente dentro de los 60 días previos a la última actualización.

Arriba