Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Valkyr

#101
Java / Re: ejercicios + soluciones en java
30 Agosto 2011, 21:36 PM
Cita de: dan_69 en 30 Agosto 2011, 19:45 PM
Escribe un programa que solo a través de procesos RECURSIVOS reciba dos cadenas c1 y c2, y
devuelva una respuesta que diga si c1 es sufijo de c2. Ej.-
Entradas Salidas
C1="ado" C2="Teclado" respuesta=true
C1="eon" C2="Cancion" respuesta=false
Recuerda que para obtener los caracteres de un String uno por uno debes utilizar el método
charAt(int i)

Me puenden ayudar??

Código (java) [Seleccionar]

public boolean sufijo(String c1, String c2){
if(c1.length() == 0)
return true;
int aux = c1.length();
if(c1.charAt(c1.length()-1) == c2.charAt(c2.length()-1))
return sufijo(c1.substring(0, c1.length()-1), c2.substring(0, c2.length()-1));
else
return false;
}
#102
Y porqué no haces un BufferedReader y vas leyendo línea a línea, es decir, en la primera línea lees el nombre, en la siguiente línea lees el decimal y lo parseas con Double.parseDouble, después lees el otro y haces lo mismo.

Es decir, sería algo así:

Código (java) [Seleccionar]

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Ingrese Alumno:");
System.out.println("Nombre: ");
n = in.readLine();
System.out.println("Codigo: ");
s = Double.parseDouble(in.readLine());
System.out.println("Nota: ");
j = Double.parseDouble(in.readLine());


Saludos.
#103
¿Has resuelto problemas en pseudocódigo? Ya que si no es así, esa sería la mejor forma de empezar. No tienes problemas de lenguaje porque el lenguaje puede ser el que tú quieras, o puedes buscar algún pseudocódigo que alguien haya escrito.

Sí ya has hecho eso, entonces podrías empezar con C o C++, o Pascal que también es bastante intuitivo y no tiene mucha complejidad.

saludos.
#104
Perdón por no haber posteado ningún reto pero me ha sido imposible conectarme apenas más de cinco minutos.

Yo he sacado esta expresión, es un poco engorrosa pero creo que puede valer:

^((0[1-9]|[12]\d)/(0[13-9]|1[0-2])|28/02|3(0/(04|06|09|11)|1/(01|03|05|07|08|10|12)))/(19\d\d|20([0-4]\d|50))$

Supongo que quizás podría simplificarse pero no es cuestión de matarme mirando la expresión a estas horas.

Saludos.
#106
Propongo la siguiente expresión regular:

(([0-1]\d|2[0-3])|\d):[0-5]\d

Reconoce los ejemplos que has puesto xD.

Saludos.
#107
Darkgold9 la tuya funciona perfectamente, lo único que puedo poner de pega es que la barra de escape no es necesaria, sería necesaria si por ejemplo estuviésemos programando y al crear una cadena de texto esa cadena contuviese comillas dentro, pero para las expresiones regulares como tal, no es necesario, aún así funciona correctamente. Te paso el testigo y te toca reto xD.

R0LFback la que propones no es correcta. Me parece que sobran las ?, además, al colocar el paréntesis lo toma como el carácter que es, no como un conjunto. Tampoco reconoce los que están en varías líneas.

Saludos a todos.
#108
Shell Root, no puse tildes porque en el primer post no especificaba que los nombres pudiesen llevar tildes, sí quisiesemos que la expresión regular reconociese muchos más nombres habría que hacer exactamente lo que dices.

De acuerdo, pues yo propongo este:

Expresión regular para buscar cadenas que vayan entre comillas, sin  comillas dentro y que puedan ocupar varias líneas.

Tendría que reconocer las siguientes cadenas (las que están subrayadas):

Citar" Hola señores" "Comillas comillas y comillas" " "

"Reto de expresiones

regulares
elhacker.net
"

Iré revisando las respuestas para ver qué proponeis. Yo ya tengo la mía hecha, cuando alguien proponga alguna que lo resuelva posteo la mia.

Saludos.
#109
Yo propondría esta:


[A-Z]?[a-z]+( [A-Z]?[a-z]+)?


Reconoce nombres que empiecen por mayúsculas y pueden tener uno o dos nombres, y además los que empiecen por minúsculas.

Saludos.
#110
Pues supongo que tendrías que recorrer el array de viviendas, y para cada zona (dices que van del 1 al 20) ver qué viviendas están en dicha zona y coger sus metros y sumarlos en una variable.

Código (java) [Seleccionar]

public int[] getMetros(){
    int[] resultado = new int[21];
    for(int i = 1;i < 21;i++)
        resultado[i] = 0;
    for(int i = 0;i < vec.length();i++){
        int aux = vec[i].getZona();
        if(aux>0 && aux<21)
            resultado[aux] += vec[i].getMetrosConstruidos();
    }
    return resultado;
}


En el array resultado vamos a guardar los metros construidos que tiene cada zona. Lo he construido con indice 21 para poder almacenar los datos desde la posición 1 (que representará la zona 1) hasta la posición 20 (que representará la zona 20). El primer bucle es para inicializar las posiciones del array . El siguiente bucle lo que hace es recorrer el array vec, y para cada vivienda coge su zona, si la zona es un valor correcto entonces se va al array resultado e incrementa los metros de esa zona.

No se si era a esto a lo que te referías, si no es así, comentalo.

Saludos.