Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/10/2012, 02:19
ecfisa
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 12 años, 5 meses
Puntos: 22
Respuesta: problema con un ciclo

Hola.

Del código creo deducir que la consigna es:
Ingresar caracteres y almacenarlos en un array.
Mostrar la cantidad de caracteres ingresados.
Mostrar la cantidad de palabras de cuatro letras
Reemplazar los caracteres por asteriscos en las palabras de cuatro letras.

Si es así, proba de este modo:
Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int longitud(char []);
  4. int palabras4(char []);
  5.  
  6. int main(int argc, char* argv[])
  7. {
  8.   char A[50], c;
  9.   int i=0;
  10.   printf("Ingrese una frase\n");
  11.   while ((c = getchar()) != '\n') A[i++] = c;
  12.   A[i]   = ' ';   // para poder evaluar la ultima palabra
  13.   A[i+1] = '\0';
  14.  // longitud(A)-1 por el ' ' agregado al final
  15.   printf("\nLa longitud de la cadena es: %d\n", longitud(A)-1);
  16.   printf("\nEsta es la cantidad de palabras con 4 letras: %d\n", palabras4(A));
  17.   printf("\nEsta es la Cadena: %s \n", A);
  18.   getchar();
  19.   return 0;
  20. }
  21.  
  22. int longitud(char V[])
  23. {
  24.   int j = 0;
  25.   while(V[j++]);
  26.   return j-1;
  27. }
  28.  
  29. int palabras4(char V[])
  30. {
  31.   int cl=0, c4=0, p4=0, i;
  32.  
  33.   while (V[cl]) {
  34.     if (V[cl] == ' ')  // fin palabra
  35.     {
  36.       if (c4 == 4)     // de 4 letras  ?
  37.       {
  38.         i = cl - 4;    // obtener inicio palabra
  39.         while (i < cl) V[i++]= '*'; // cambiar por *
  40.         p4++;          // otra palabra de 4 letras
  41.       }
  42.       c4 = 0;          // a contar de nuevo
  43.       cl++;            // avanzar espacio
  44.     }
  45.     cl++;              // otra letra
  46.     c4++;              // contar
  47.   }
  48.   return p4;
  49. }
Si bién se podría hacer mas simple, traté de respetar las "herramientas" que, por el código, veo te han dado hasta ahora.

Saludos.