elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 01:26  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Ayuda con problema [Resuelto]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con problema [Resuelto]  (Leído 326 veces)
Afsoon

Desconectado Desconectado

Mensajes: 130


Ver Perfil
Ayuda con problema [Resuelto]
« en: 12 Noviembre 2011, 18:32 »

Hola buenas, estoy dando la cabeza con un problema de una pagina web en Java y no lo consigo, tengo todo menos la parte de calcular. Aqui os pongo el problema (No todo el enunciado porque hay una parte que no sirve).

Citar
Tanto el nombre del grupo y el nombre del cometa son convertidos en un número de la siguiente manera: el número final es simplemente el producto de todas las letras en el nombre, donde "A" es 1 y "Z" es 26. Por ejemplo, el grupo "USACO" sería 21 * 19 * 1 * 3 * 15 = 17955. Si el número del grupo módulo 47 es el mismo que el número del cometa módulo 47, entonces tú necesitas decirle al grupo ¡Alístense¡ (Recuerda que "a mod b" es el residuo después de dividir a por b; 34 mod 10 es 4.)

Escribe un programa el cual lea el nombre de un cometa y el nombre de un grupo y encuentre si de acuerdo al método antes descrito el grupo debe ir en el OVNI detrás de ese cometa y en ese caso imprima "GO", y si no "STAY". Los nombres de los grupos y de los cometas serán cadenas de letras mayúsculas sin espacios ni caracteres de puntuación, hasta de 6 caracteres de longitud.

Ejemplos:

Entrada    Salida
COMETQ
HVNGAT      GO
------------------------
ABSTAR
USACO      STAY


Y este es el código que tengo hecho

Código
public class ride {
private int valorGrupo;
private int valorNave;
private int mod;
private String grupo;
private String nave;
private BufferedReader in;
private PrintWriter out;
private StringTokenizer st;
 
public ride() throws Exception{
try
{
in = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream(this.getClass().getSimpleName()+".in")));
out = new PrintWriter(new FileWriter(this.getClass().getSimpleName()+".out"));
 
String datos = in.readLine().trim();
st = new StringTokenizer(datos);
nave = st.nextToken();
 
while((datos = in.readLine()) != null){
st = new StringTokenizer(datos);
grupo = st.nextToken();
 
}
 
if(grupo.length() > 6 || grupo.length() == 0 || nave.length() > 6 || nave.length() == 0)
System.exit(0);
 
 
valorGrupo = 1;
valorNave = 1;
 
for(int i = 0; i < grupo.length(); i++){
valorGrupo *= Character.getNumericValue(grupo.charAt(i));
}
 
for(int i = 0; i < nave.length(); i++){
valorNave *= Character.getNumericValue(nave.charAt(i));
}
 
mod = 47;
 
 
}catch (Exception e) {
throw new Exception(e);
}finally
{
if(in != null)
in.close();
if(out != null)
out.close();
}
}
 
 
public static void main(String[] args) {
try
{
new ride();
System.exit(0);
}catch(Exception e){
e.printStackTrace();
System.exit(-1);
}
}
}
 

Las clases in y out seria para los archivos en donde se encuentra los datos (in) y out (la escritura de si es GO o Stay). Llevo tiempo dando el coco pero no consigo sacar la maldita operacion, o es que lo comprendo mal o no lo se.


« Última modificación: 13 Noviembre 2011, 17:18 por Afsoon » En línea
ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



Ver Perfil
Re: Ayuda con problema
« Respuesta #1 en: 13 Noviembre 2011, 17:13 »

Te dejo mi solución que pasa los juegos de prueba en USACO:
Código
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class ride implements Runnable {
   PrintWriter writer;
   BufferedReader reader;
   StringTokenizer tokenizer;
 
   private void solve() throws IOException {
       String s = nextToken(), r = nextToken();
       int a = 1, b = 1;
       for (int i = 0; i < s.length(); ++i) a = (a*(Character.getNumericValue(s.charAt(i)) - 9))%47;
       for (int i = 0; i < r.length(); ++i) b = (b*(Character.getNumericValue(r.charAt(i)) - 9))%47;
 
       if (a == b) writer.println("GO");
       else writer.println("STAY");
   }
 
   public static void main(String[] args) {
       new ride().run();
   }
 
   public void run() {
       try {
           reader = new BufferedReader(new FileReader("ride.in"));
           writer = new PrintWriter(new FileWriter("ride.out"));
           tokenizer = null;
           solve();
           reader.close();
           writer.close();
       }
       catch (IOException e) {
       }
   }
 
   String nextToken() throws IOException {
       if (tokenizer == null || !tokenizer.hasMoreTokens())
           tokenizer = new StringTokenizer(reader.readLine());
       return tokenizer.nextToken();
   }
}


En línea
Afsoon

Desconectado Desconectado

Mensajes: 130


Ver Perfil
Re: Ayuda con problema
« Respuesta #2 en: 13 Noviembre 2011, 17:15 »

Te dejo mi solución que pasa los juegos de prueba en USACO:
Código
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class ride implements Runnable {
   PrintWriter writer;
   BufferedReader reader;
   StringTokenizer tokenizer;
 
   private void solve() throws IOException {
       String s = nextToken(), r = nextToken();
       int a = 1, b = 1;
       for (int i = 0; i < s.length(); ++i) a = (a*(Character.getNumericValue(s.charAt(i)) - 9))%47;
       for (int i = 0; i < r.length(); ++i) b = (b*(Character.getNumericValue(r.charAt(i)) - 9))%47;
 
       if (a == b) writer.println("GO");
       else writer.println("STAY");
   }
 
   public static void main(String[] args) {
       new ride().run();
   }
 
   public void run() {
       try {
           reader = new BufferedReader(new FileReader("ride.in"));
           writer = new PrintWriter(new FileWriter("ride.out"));
           tokenizer = null;
           solve();
           reader.close();
           writer.close();
       }
       catch (IOException e) {
       }
   }
 
   String nextToken() throws IOException {
       if (tokenizer == null || !tokenizer.hasMoreTokens())
           tokenizer = new StringTokenizer(reader.readLine());
       return tokenizer.nextToken();
   }
}

Ya esta, ya he visto mi fallo se me olvido que no empieza desde 1 sino desde 10 ¬¬.
« Última modificación: 13 Noviembre 2011, 17:18 por Afsoon » En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema en conexión resuelto.
GNU/Linux
fandango 1 280 Último mensaje 10 Febrero 2005, 17:30
por Soul Lost
problema resuelto gracias.
Multimedia
morbid 0 238 Último mensaje 31 Enero 2006, 19:56
por morbid
Problema con un FTP Server [RESUELTO]
Desarrollo Web
дٳŦ٭ 2 1,711 Último mensaje 1 Mayo 2006, 14:41
por дٳŦ٭
PROBLEMA RESUELTO
Windows
R4YK 0 386 Último mensaje 27 Abril 2008, 23:34
por R4YK
[Resuelto] Problema con while
Programación C/C++
Rhertz 1 493 Último mensaje 1 Mayo 2011, 02:44
por Rhertz
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines