Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Slayer_Zero en 20 Junio 2012, 04:07 am



Título: Ayuda con arreglos
Publicado por: Slayer_Zero en 20 Junio 2012, 04:07 am
Hola
necesito ayuda urgente
necesito realizar un programa que lea n numeros y almacene en 2 arreglos (10 elementos para cada arreglo), un arreglo que almacene los numeros positivos y otro con los negativos, el numero 0 sera ignorado
ya tengo algo del programa pero la verdad no se si este bien
Citar
import java.util.Scanner;
public class examfinal2{
   public static void main(String argumentos[]){
      int i=0,po=0,no=0, suma,cont=1,poscon=1,aux=0;
       Scanner entrada = new Scanner (System.in);
      double promp=0, promn=0;
      int datos1[] = new int[10];
      int datos2 []= new int[10];
      int datos3 []= new int[10];
      Scanner numero = new Scanner (System.in);
      while (cont!=0){
       System.out.printf("Ingresar 10 numeros positivos y 10 numeros negativos");
      for (i=0; i<20; i++){
         System.out.printf("\nIngresa numero :",i);
         datos1 = numero.nextInt();
         if (datos1==0){
            System.out.println("Ingresar otro valor");
            i--;
         }
      
      
         if (datos1>0){
          System.out.println("Numero Positivo");
          datos2[po]=datos1;
          i++;
          for(i=0; i<1; i++){
         System.out.printf("\nValor: %d posicion: %d",datos2[po], po++);}
         }

         if (po==10){

            System.out.println("\nIngresar otro valor");
            datos2[po]=datos1;
            po--;   
         }
      
         if (datos1<0) {
          System.out.println("Numero Negativo");
         datos3[no]=datos1;
         for(i=0; i<1; i++){
         System.out.printf("\nValor: %d posicion: %d",datos3[no], no++);}
         
         
         if (no==10){
            System.out.println("\nIngresar otro valor");
            datos3[no]=datos1;
            i++;
            no--;

            
         }
         }
      }
      for(i=0; i<20; i++){
         promp= promp+datos2[po];
      }
      promp= promp/10;
      System.out.printf("\nPromedio pares = %f",promp);
      
      for(i=0; i<20; i++){
         promn= promn+datos3[no];
      }
      promn= promn/10;
      System.out.printf("\nPromedio impares = %f",promn);
         System.out.printf("\nDesea volver a realizar las operaciones? SI[1]  NO[0]: ");
         cont = entrada.nextInt();
      
   
      

      }
   }
}


Título: Re: Ayuda con arreglos
Publicado por: s00rk en 20 Junio 2012, 06:00 am
En los arreglos debes indicar la posicion donde guardaras los valores lo cual no haces en datos1 e igual para ver algun valor ocupas indicar la posicion.


Título: Re: Ayuda con arreglos
Publicado por: Slayer_Zero en 20 Junio 2012, 06:32 am
Ya casi esta listo lo unico que me falta es sacar el promedio pero no lo saca
me podrias ayudar a saber en que estoy mal?
Citar
import java.util.Scanner;
public class examenfinal{
   public static void main(String argumentos[]){
      int i=0,po=0,no=0, suma,cont=1,poscon=1,aux=0,n=0;
       Scanner entrada = new Scanner (System.in);
      double promp=0, promn=0;
      int datos2 []= new int[10];
      int datos3 []= new int[10];
      Scanner numero = new Scanner (System.in);
      while (cont!=0){
      System.out.printf("Ingresar 10 numeros positivos y 10 numeros negativos");
      for (i=0; i<20; i++){
         System.out.printf("\nIngresa numero :",n);
         n = numero.nextInt();
         if (n==0){
            System.out.println("Ingresar otro valor");
            i--;
         }
         if (n>0){
          System.out.println("Numero Positivo");
          if (po!=10){
            datos2[po]=n;
         System.out.printf("\nValor: %d posicion: %d",datos2[po], po++);
         }
         else {
            System.out.println("\nIngresar otro valor");
            i--;
            }
            }
         if (n<0) {
          System.out.println("Numero Negativo");
          if(no!=10){
          datos3[no]=n;
         System.out.printf("\nValor: %d posicion: %d",datos3[no], no++);}
         else {
            System.out.println("\nIngresar otro valor");
            i--;
         }
         }
         
         if(i==20){
            promp= promp+datos2[po];
            promp= promp/10;
              System.out.printf("\nPromedio pares = %f",promp);
              promn= promn+datos3[no];
            promn= promn/10;
              System.out.printf("\nPromedio impares = %f",promn);
      }
      }
      
      System.out.printf("\nDesea volver a realizar las operaciones? SI[1]  NO[0]: ");
         cont = entrada.nextInt();
      }
      }
   }


Título: Re: Ayuda con arreglos
Publicado por: s00rk en 20 Junio 2012, 08:23 am
El error esta en que estas intentando sacar el promedio dentro del bucle for, para sacar el promedio primero debes sumar todos los valores leidos y luego al salir del for, dividir la suma de estos entre el total que se leyeron.

Ademas nunca va a entrar a la condicion if(i == 20), ya que el bucle va de 0 a 19; i = 0; i < 20 (esto indica mientras i sea menor a 20 mas no igual), por lo que nunca entraria a ese bucle. Aparte de que promn y el otro solamente tendrian el valor del ultimo valor leido.