Foros del Web » Programación para mayores de 30 ;) » Java »

Ejercicio de Facultad! Me ayudan a resolverlo de otra manera??

Estas en el tema de Ejercicio de Facultad! Me ayudan a resolverlo de otra manera?? en el foro de Java en Foros del Web. Hola! 1- Dado dos letras (char) y una cadena (string) terminada en punto decir cuantas palabras de la cadena contienen las letras ingresadas, las letras ...
  #1 (permalink)  
Antiguo 23/02/2010, 16:33
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 14 años, 3 meses
Puntos: 4
Ejercicio de Facultad! Me ayudan a resolverlo de otra manera??

Hola!
1- Dado dos letras (char) y una cadena (string) terminada en punto decir cuantas palabras de la cadena contienen las letras ingresadas, las letras pueden estar en cualquier orden

Me dijeron que en 30 minutos resuelva ese ejercicio, el cual lo hice pero muy largo pero me anduvo re bien! Pero el fucking profesor me dijo que era muy largo asique me desaprobo el final! Me dijo que con solo un WHILE y una sentencia DE CONDICION lo puedo resolver.

Al llegar a mi casa con toda la bronca pq me desaprobaron pero contento pq era como un desafio hacerlo mas corto para mi. Hice esto : (es lo mas corto que me salio )

Código Javascript:
Ver original
  1. public class Basura {
  2.  
  3.  
  4.     public static void main(String[] args) {
  5.    
  6.         String cadena="Holaao comooooo estaasao.";
  7.        
  8.         int c=contar(cadena,'a','o');
  9.         System.out.println("Las palabras que contienen esas letras son: "+c);
  10.  
  11.     }
  12.     public static int contar (String cad,char a,char b)
  13.     {
  14.         int i=0,j=0,k=0,d=0,cont=0;
  15.         char c,l;
  16.         boolean band;
  17.    
  18.         while (j<cad.length())
  19.         {
  20.            
  21.             c=cad.charAt(j);
  22.             if(c==a || c==b)
  23.             {
  24.                 band=true;
  25.                 i=d;
  26.                 k=j+1;
  27.                 cad=cad.substring(0,cad.length()-1)+" ";
  28.                 while(k<cad.indexOf(" ",i) && (band))
  29.                 {
  30.                     l=cad.charAt(k);
  31.                     if(l!=c)
  32.                     {
  33.                         if(l==a || l==b)
  34.                         {
  35.                             cont++;
  36.                             c=cad.charAt(k);
  37.                             band=false;
  38.                         }
  39.                     }
  40.                     k++;
  41.                    
  42.                 }
  43.                 j=k+1;
  44.                 d=k+1;
  45.             }
  46.             else
  47.                 j++;
  48.         }
  49.         return cont;
  50.        
  51.        
  52.     }
  53.  
  54.  
  55. }

LA SALIDA ES: "2"

Como veran lo hice con 2 While y 3 Sentecias de condicion. La pregunta del millon es:

ES POSIBLE HACERLO CON UN WHILE Y UNA SENTENCIA DE CONDICION???

Hay que tener cuidado de que las 2 letras pueden estar mas de una mes en una palabra, pero solo debera contarse como una palabra que contiene esas letras:
Ejemplo

Entra: "Holaa como te vaoa."

Ingresando las letras "a" y "o"

Salida: 2

MUCHAS GRACIAS LOS QUE ME PUEDAN AYUDAR
  #2 (permalink)  
Antiguo 23/02/2010, 16:57
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ejercicio de Facultad! Me ayudan a resolverlo de otra manera??

Usando el paquete java.util de java:
Código Javascript:
Ver original
  1. public static void main(String[] argumentos){
  2.         String cadena="Holaao comooooo estaasao.";
  3.         //int c=contar(cadena,'a','o');
  4.         int c=contar2(cadena,'a','o');
  5.         System.out.println("Las palabras que contienen esas letras son: "+c);
  6.     }
  7.    
  8.     public static int contar2(String palabras, char a, char b){
  9.         int resultado = 0;
  10.         String palabra = null;
  11.         StringTokenizer tokenizer = new StringTokenizer(palabras," ");
  12.         while(tokenizer.hasMoreTokens()){
  13.             palabra = tokenizer.nextToken();
  14.             if(palabra.indexOf(a)!=-1 && palabra.indexOf(b)!=-1)
  15.                 resultado++;
  16.         }
  17.         return resultado;
  18.     }

Carlos Cacique.
http://carloscacique.blogspot.com
  #3 (permalink)  
Antiguo 23/02/2010, 17:20
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Ejercicio de Facultad! Me ayudan a resolverlo de otra manera??

Cita:
Iniciado por ccacique Ver Mensaje
Usando el paquete java.util de java:
Código Javascript:
Ver original
  1. public static void main(String[] argumentos){
  2.         String cadena="Holaao comooooo estaasao.";
  3.         //int c=contar(cadena,'a','o');
  4.         int c=contar2(cadena,'a','o');
  5.         System.out.println("Las palabras que contienen esas letras son: "+c);
  6.     }
  7.    
  8.     public static int contar2(String palabras, char a, char b){
  9.         int resultado = 0;
  10.         String palabra = null;
  11.         StringTokenizer tokenizer = new StringTokenizer(palabras," ");
  12.         while(tokenizer.hasMoreTokens()){
  13.             palabra = tokenizer.nextToken();
  14.             if(palabra.indexOf(a)!=-1 && palabra.indexOf(b)!=-1)
  15.                 resultado++;
  16.         }
  17.         return resultado;
  18.     }

Carlos Cacique.
http://carloscacique.blogspot.com

Gracias Carlos!! Sos un grande! jaj lo voy a ver mejor a tu codigo! Gracias de nuevo!
  #4 (permalink)  
Antiguo 24/02/2010, 01:11
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 5 meses
Puntos: 51
Respuesta: Ejercicio de Facultad! Me ayudan a resolverlo de otra manera??

En el API de StringTokenizer de Java 5 y 6:

Cita:
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.
Así que mejor con con split() de la clase String.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 24/02/2010, 01:59
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Ejercicio de Facultad! Me ayudan a resolverlo de otra manera??

A ver si esto te ayuda:

Código PHP:
public static int contar(String palabraschar achar b) {
   
int count 0;
   
int i 0;
   
String palabra[] = palabras.split(" ");
   while (
palabra.length ) {
        if (
palabra[i].indexOf(a)>&& palabra[i].indexOf(b) >0){
            
//letras encontrada
            
count++;
        }
        
i++;
   }
   return 
count;

Creo que con eso vale ojo mira la sintaxis hace mucho que no escribo Java.

Saludos.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:05.