Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/02/2010, 16:33
Avatar de leocente
leocente
 
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 14 años, 4 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