Urgente su ayuda con incidencia de números

Iniciado por Lesterfbt, 1 Julio 2017, 18:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Lesterfbt

Escriba un programa que solicite números enteros entre 1 y 100 de forma continua hasta que el usuario ingrese el valor de 0. El programa debe determinar las incidencias de cada número de 1 a 100 en los números ingresados. Por ejemplo si se ingresa 1, 1, 4, 5, 6, 20, 20, 1, 1. La salida del programa seria:
Incidencia de 1 es 4
Incidencia de 4 es 1
Incidencia de 5 es 1
Incidencia de 6 es 1
Incidencia de 20 es 2

engel lex

no se hacen tareas, indica tu problema y lo que llevas hecho
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Lesterfbt

#2
Hola buenas este es mi codigo:

Código (java) [Seleccionar]
public class Ejercicio12 {
   static int rep=0;
  public static void main(String[] args)
{
           Scanner linea = new Scanner(System.in);
int [] numd=new int[4];
               System.out.println("Introduce los número:");
for(int i=0;i<numd.length;i++){
                   numd[i] = linea.nextInt();
                   int rep=0;
for(int j=0;j<numd.length-1;j++){
if(i!=j){
                                   if(numd[i]==numd[j]){
                                           
}
}
}
}
               
int n=numd.length;
for (int k=0;k<=n-1;k++){
                  if(numd[k]==numd[k]){
rep ++;
                                           
System.out.println("Incidencia de "+ numd[k] +" es "+rep);
}
}
}
}


Esto me imprime en pantalla:

Introduce los número:
2
2
3
3
Incidencia de 2 es 1
Incidencia de 2 es 2
Incidencia de 3 es 3
Incidencia de 3 es 4

Mi problema es que no entiendo como hacer que se sume la repetición de un mismo numero y que solo me imprima el numero repetido una vez tal como aparece en el ejercicio expuesto.


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

engel lex

para contar las incidencias, depende del caso, un camino por ejemplo es:

despues de llenar el array, lo organizas y cuentas cada aparicion, simplemente si el numero actual es igual al anterior, se suma uno para ese numero, si es diferente, imprimes cuantos conseguiste del anterior y empiezas a sumar los nuevos

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

migueluc

Para empezar parece que numd tiene un tamaño predefinido de 4, que igual no es lo que necesitas; te recomiendo que uses un arraylist o algún tipo de collection ya que son dinámicas.

Un error que veo es que en la línea 22 estás comparando numd[k] con numd[k], y eso siempre es TRUE porque estás comparando el mismo número.

De todas formas te aconsejo que revises un poco el algoritmo; quizás te vendría bien plantearlo en papel antes de codificar.

Lesterfbt

#5
Aquí la solución al ejercicio espero le sirva de ayuda alguien mas saludos.

Código (java) [Seleccionar]
public class Ejercicio2 {

public static void main(String args[]) throws IOException {
BufferedReader bufEntrada = new BufferedReader(new InputStreamReader(System.in));
int frecuencia[];
int i;
int n;
int num = 1;
frecuencia = new int[100];
System.out.println("Digite los Numeros entre 1 y 100");
n = 99;
for (i=1;i<=n;i++) {
frecuencia[i] = 0;
}
for (i=1;i<=n;i++) {
if (num!=0){
                   num = Integer.parseInt(bufEntrada.readLine());
               }
if (num>=1 && num<=99) {
frecuencia[num] = frecuencia[num]+1;
}
}
               
System.out.println("Las incidencias de los numeros son :");
for (i=1;i<=n;i++) {
if (frecuencia[i]==0) {
System.out.print("");
} else {
System.out.println("Incidencia de "+i+" es "+frecuencia[i]);
}
}
}


}



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex