7.12 (Eliminación de duplicados) Use un arreglo unidimensional para resolver el siguiente problema: escriba una aplicación que reciba como entrada cinco números, cada uno de los cuales debe estar entre 10 y 100. A medida que se lee cada número, muéstrelo solamente si no es un duplicado de un número que ya se haya leído. Prepárese para el "peor caso", en el que los cinco números son diferentes. Use el arreglo más pequeño que sea posible para resolver este problema. Muestre el conjunto completo de valores únicos introducidos, después de que el usuario introduzca cada nuevo valor.
El siguiente código debe guardarse con el nombre UsaDeitel_7_12.java
public class UsaDeitel_7_12 { // Abre clase publica UsaDeitel_7_12 public static void main(String args[]) { // Abre main Deitel_7_12 miObjeto = new Deitel_7_12(); miObjeto.Recibe(); } // Cierra main } // Cierra clase publica UsaDeitel_7_12
El siguiente código debe guardarse con el nombre Deitel_7_12.java
/* ******************************************************************* * * * DEITEL JAVA 7.12 * * _________ _________ * * . * * _________ _________ * * * * Este programa recibe 5 numeros distintos entre 10 y 100 y * * los imprime solo si no han sido repetidos. * * * * 19 de octubre de 2011 * * * ******************************************************************* */ import java.util.Scanner; public class Deitel_7_12 { // Abre clase Deitel_7_12 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * * * Declaracion de variables globales * * * ****************************************************************** */ Scanner entrada = new Scanner(System.in); enum Estado {SI, NO}; private int Tamano = 5; private int numero; private int numeros_recibidos = 0; Estado almacenar; Estado imprimir; int Arreglo[] = new int[Tamano]; ////////////////////////////////////////////////////////////////////// // Metodo Recibe ////////////////////////////////////////////////////////////////////// public void Recibe() { // Abre metodo Recibe for ( int n = 0; n < Tamano; n++ ) { // Abre for numero = 0; while ( (10 > numero) || ( 100 < numero) ) { System.out.println("\nPor favor introduzca un numero entre 10 y 100 inclusive\n"); numero = entrada.nextInt(); } Arreglo[n] = numero; numeros_recibidos++; Imprime(); } // Cierra for System.out.println("\n"); } // Cierra metodo Recibe /* El metodo Imprime pone en la pantalla los numeros recibidos hasta el momento */ ////////////////////////////////////////////////////////////////////////////////// // METODO IMPRIME ////////////////////////////////////////////////////////////////////////////////// public void Imprime() { // Abre metodo Imprime System.out.printf("\nLos numeros recibidos: %d", numeros_recibidos); imprimir = Estado.SI; System.out.printf("\n%d", Arreglo[0]); for ( int j = 1; j < numeros_recibidos; j++ ) { // Abre for imprimir = Estado.SI; for ( int k = 0; k < j; k++) { if ( Arreglo[j] == Arreglo[k] ) imprimir = Estado.NO; } if ( Estado.SI == imprimir ) { System.out.printf("\n%d", Arreglo[j]); } } // Cierra for } // Cierra metodo Imprime } // Cierra clase Deitel_7_12
Solo quiero recordar que, por convención los nombres de los métodos comienzan con una letra minúscula.
ResponderEliminarGracias. Lo tendré en cuenta.
ResponderEliminarbueno
ResponderEliminarSolo veo un inconveniente y es con respecto al enunciado: "A medida que se lee cada número, muéstrelo solamente si no es un duplicado..." mientras que este código lee los 5 números y después hace la evaluación e imprime.
ResponderEliminarEl código es una buena aproximación pero no esta conforme al enunciado, pueden apoyarse en este:
ResponderEliminarhttps://github.com/SSBaez/Deitel-Java-Ejercicio-7.12/blob/master/Ejercicio7.12/src/com/ssbaez/ejercicio712/EliminarDuplicado.java
Me gustaria saber el codigo para este mismo programa pero en C++
ResponderEliminar