elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  error codigo matriz
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: error codigo matriz  (Leído 3,948 veces)
edgano

Desconectado Desconectado

Mensajes: 5


Ver Perfil
error codigo matriz
« en: 2 Diciembre 2008, 00:31 am »

hola de nuevo gente.
despues de la ayuda que me disteis en este foro, logre hacer el ejercicio, pero a partir de un numero de columnas me "peta" el codigo... me gustaria saber donde me he equivocado y que esta mal.
p.d. no lo e podido solucionar porke haze poko que programo

gracias de antemano


CODIGO
import java.io.*;

public class Prac2 {
   public static void main(String[] args) throws Exception {
      
      // Declaracion para utilizar el teclado
      InputStreamReader entrada = new InputStreamReader(System.in);
      BufferedReader teclat = new BufferedReader(entrada);
      
      // Definicion de variables
      int N,i,Max,aux,h,num;
      int [][]PWM;
      char val;
      val='º';
      i=0;
      num=0;
      
      // Pedir tamaño matriz
      System.out.println("Introdueix el tamany de la finestra");
      N= Integer.parseInt(teclat.readLine());
      PWM=new int [4][N];
      
      // Introducir datos en matriz
      System.out.println("Introdueix els valors i finalitza amb *");
      
         //Encontrar valor final
      while ((val!='*')){
         val=(char)teclat.read();
      
            // Asignar valor al lugar correspondiente                                                                                          
         switch(val){
            case 'A':
                    PWM[0]=PWM[0]+1;
                    break;
            case 'C':
                    PWM[1]=PWM[1]+1;
                    break;
                 case 'G':
                    PWM[2]=PWM[2]+1;
                    break;
                 case 'T':
                    PWM[3]=PWM[3]+1;
                 break;      
         }
         i++;

            //Mirar que no se supere el valor de secuencia y si se supera inicializar i
         if (i>=N){
            i=0;
         }   
      }
            // Mostrar la matriz por pantalla
      for(i=0; i<PWM.length; i++){
         for(h=0;h<PWM.length;h++)
            System.out.print(" "+PWM[h]);
         System.out.println ( );   
      }

            //Buscar valor maximo
      for(i=0;i<N;i++){
            Max=0;
            aux=0;
            for(h=0;h<N;h++){
                if(PWM[h]>Max){
                    Max=PWM[h];
                    aux=h;
                }
           
            }   
               //Mostrar valor maximo
            if (num==0){
               System.out.print("El prototipus resultant es: ");
               num++;
           }       
            switch(aux){
            case 0:System.out.print("A ");break;
            case 1:System.out.print("C ");break;
                 case 2:System.out.print("G ");break;
                 case 3:System.out.print("T ");break;      
         }
       }
   }
}
       
   
ESTE CODIGO TE PIDE EL TAMAÑO DE UNA SECUENCIA Y TE HAZE INTRODUIR DIFERENTES LETRRAS(A,C,G,T,) ENTONCES TE DICE EL MAXIMO DE CADA POSICION. PERO NO SE PORQUE CUANDO LA MATRIZ ES 5 O SUPERIOR PETA...(INDEXOUTOFBOUNDS)


En línea

Amerikano|Cls


Desconectado Desconectado

Mensajes: 789


[Beyond This Life]


Ver Perfil WWW
Re: error codigo matriz
« Respuesta #1 en: 2 Diciembre 2008, 00:41 am »

Yo por mi parte no te he entendido nada, explicate mejor   ;D, y segundo escribe tus codigos con la etiqueta code=java

salu2


En línea





Mi blog:
http://amerikanocls.blogspot.com
edgano

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: error codigo matriz
« Respuesta #2 en: 2 Diciembre 2008, 00:44 am »

quando te pide el tamaño de la matriz (tamaño de ventana) si le pones 6 o 7... te sale todo ok?? no puede ser!!!
me e explikao bien=??
En línea

juancho77


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: error codigo matriz
« Respuesta #3 en: 2 Diciembre 2008, 04:51 am »

Código
  1. PWM=new int [4][N];
  2.  
  3.      // Introducir datos en matriz
  4.      System.out.println("Introdueix els valors i finalitza amb *");
  5.  
  6.         //Encontrar valor final
  7.      while ((val!='*')){
  8.         val=(char)teclat.read();
  9.  
  10.            // Asignar valor al lugar correspondiente                                                                                          
  11.         switch(val){
  12.            case 'A':
  13.                    PWM[0]=PWM[0]+1;
  14.                    break;

Eso no va andar nunca asi. Tiene muchos errores graves: mira la declaracion de PWM: un arreglo bidimensional de enteros. Luego, en la sentencia
Código
  1. PWM[0]=PWM[0]+1
le intentas sumar un entero a una propiedad de la matriz. Lo logico seria acceder al valor
Código
  1. PWM[x][y]
y luego sumarle uno.
Corrige lo basico y replantea tu duda.
Saludos
En línea

edgano

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: error codigo matriz
« Respuesta #4 en: 2 Diciembre 2008, 09:49 am »

Código
  1. import java.io.*;
  2.  
  3. public class Prac2 {
  4. public static void main(String[] args) throws Exception {
  5.  
  6. // Declaracion para utilizar el teclado
  7. BufferedReader teclat = new BufferedReader(entrada);
  8.  
  9. // Definicion de variables
  10. int N,i,Max,aux,h,num;
  11. int [][]PWM;
  12. char val;
  13. val='º';
  14. i=0;
  15. num=0;
  16.  
  17. // Pedir tamaño matriz
  18. System.out.println("Introdueix el tamany de la finestra");
  19. N= Integer.parseInt(teclat.readLine());
  20. PWM=new int [4][N];
  21.  
  22. // Introducir datos en matriz
  23. System.out.println("Introdueix els valors i finalitza amb *");
  24.  
  25. //Encontrar valor final
  26. while ((val!='*')){
  27. val=(char)teclat.read();
  28.  
  29. // Asignar valor al lugar correspondiente
  30. switch(val){
  31. case 'A':
  32.           PWM[0][i]=PWM[0][i]+1;
  33.           break;
  34. case 'C':
  35.           PWM[1][i]=PWM[1][i]+1;
  36.           break;
  37.           case 'G':
  38.           PWM[2][i]=PWM[2][i]+1;
  39.           break;
  40.           case 'T':
  41.           PWM[3][i]=PWM[3][i]+1;
  42.           break;
  43. }
  44. i++;
  45.  
  46. //Mirar que no se supere el valor de secuencia y si se supera inicializar i
  47. if (i>=N){
  48. i=0;
  49. }
  50. }
  51. // Mostrar la matriz por pantalla
  52. for(i=0; i<PWM.length; i++){
  53. for(h=0;h<PWM[i].length;h++)
  54. System.out.print(" "+PWM[i][h]);
  55. System.out.println ( );
  56. }
  57.  
  58. //Buscar valor maximo
  59. for(i=0;i<N;i++){
  60.            Max=0;
  61.            aux=0;
  62.            for(h=0;h<N;h++){
  63.                if(PWM[h][i]>Max){
  64.                    Max=PWM[h][i];
  65.                    aux=h;
  66.                }
  67.  
  68.            }    
  69.             //Mostrar valor maximo
  70.            if (num==0){
  71.            System.out.print("El prototipus resultant es: ");
  72.            num++;
  73.         }    
  74.            switch(aux){
  75. case 0:System.out.print("A ");break;
  76. case 1:System.out.print("C ");break;
  77.           case 2:System.out.print("G ");break;
  78.           case 3:System.out.print("T ");break;
  79. }
  80.       }
  81.   }
  82. }
  83.  
lo siento, se me havia colado al copiarlo, creo que es correcto, ya que compila correctamente hasta el valor 4 de N...lo que  no entiendo pk "peta" a partir de ese valor
En línea

Amerikano|Cls


Desconectado Desconectado

Mensajes: 789


[Beyond This Life]


Ver Perfil WWW
Re: error codigo matriz
« Respuesta #5 en: 2 Diciembre 2008, 18:11 pm »

porque no lo debuggean?  ::)

salu2
En línea





Mi blog:
http://amerikanocls.blogspot.com
juancho77


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: error codigo matriz
« Respuesta #6 en: 3 Diciembre 2008, 11:42 am »

Tu pones

Código
  1. for(i=0;i<N;i++){
  2.            Max=0;
  3.            aux=0;
  4.            for(h=0;h<N;h++){
  5.                if(PWM[h][i]>Max){
  6.                    Max=PWM[h][i];
  7.                    aux=h;
  8.                }
  9.  

y lo declaras

      
Código
  1. N= Integer.parseInt(teclat.readLine());
  2. PWM=new int [4][N];

Entonces cuando N es mas de 4, por ejemplo, N=6, h toma el valor 4,5 y el programa te larga un arrayIndexOutOfBounds Exception.
Debes corregir esa parte. No te dire bien como porque no entiendo que hace el programa (esta en italiano :huh:).
Saludos.
En línea

arlick

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: error codigo matriz
« Respuesta #7 en: 3 Diciembre 2008, 12:39 pm »

que cosa más rara! y tengo que añadir fea, si fuese tu profesor te suspendía. deberías aprender a tabular correctamente.

Por otra parte... el problema está aquí:

Código
  1. //Buscar valor maximo                                                                                                                        
  2.                for(i=0;i<N;i++){                                                                                                                
  3.                    Max=0;                                                                                                                                  
  4.                    aux=0;                                                                                                                                  
  5.                    for(h=0;h<PWN.length;h++){                        //<-- AQUI!!
  6.                            if(PWM[h][i]>Max){                                                                                                              
  7.                                    Max=PWM[h][i];                                                                                                          
  8.                                    aux=h;                                                                                                                  
  9.                            }                                                                                                                                
  10.                    }                                                                                                                                        
  11.                    //Mostrar valor maximo                                                                                                                  
  12.                    if (num==0){
  13.                            System.out.print("El prototipus resultant es: ");
  14.                            num++;
  15.                    }
  16.                    switch(aux){
  17.                            case 0:
  18.                                    System.out.print("A ");
  19.                                    break;
  20.                            case 1:
  21.                                    System.out.print("C ");
  22.                                    break;
  23.  
  24.                            case 2:
  25.                                    System.out.print("G ");
  26.                                    break;
  27.                            case 3:
  28.                                    System.out.print("T ");
  29.                                    break;
  30.                        }
  31.                }
  32.  

Habías puesto un valor incorrecto que se salía de rango. Parece que es algo relacoinado con el adn, un típico problema de programación? a mí no me suena xD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda urgente con matriz DEV C++ [Ya trae código]
Programación C/C++
sTaborracho 5 6,481 Último mensaje 30 Octubre 2011, 06:15 am
por sTaborracho
Ayuda urgente con matriz 3x3 DEV C++ [Ya trae código]
Programación C/C++
sTaborracho 0 10,281 Último mensaje 18 Octubre 2011, 22:04 pm
por sTaborracho
Calcular máximo de matriz, error
Programación C/C++
Puntoinfinito 7 4,566 Último mensaje 18 Julio 2013, 11:58 am
por Puntoinfinito
Error al incrementar un índice de una matriz
Programación C/C++
neveldine 1 1,472 Último mensaje 8 Diciembre 2015, 19:53 pm
por avesudra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines