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)
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)