Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con un ciclo

Estas en el tema de problema con un ciclo en el foro de C/C++ en Foros del Web. Hola gente!! como estan?? miren soy principiante en lenguaje c, y estoy teniendo un problema tonto!! necesitaria que alguien me diga porque no entra en ...
  #1 (permalink)  
Antiguo 16/10/2012, 14:08
Avatar de momia_lab2  
Fecha de Ingreso: octubre-2012
Ubicación: MI CASA
Mensajes: 2
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta problema con un ciclo

Hola gente!! como estan?? miren soy principiante en lenguaje c, y estoy teniendo un problema tonto!! necesitaria que alguien me diga porque no entra en el ciclo donde cambio letras por asteriscos.. desde ya muchas gracias!!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void IMP(char B[]);
void IC4 (char C[]);
int main()
{
char A[50], c;
int t = 0, i;

printf("Ingrese una frase\n");
i=0;
while ( ( c = getchar() ) != '\n')
{
A[i++] = c;
}//while((getchar(c))!='\n')

A[i] = '\0';
IMP(A);
IC4(A);
getchar();
}//cierre funcion main
void IMP(char B[])
{
int j = 0;
while(B[j] != '\0')
{
j++;
}//while(B[i] != '\0')
printf("La longitud de la cadena es:%d\n", j);
}//void IMP(char B[])
void IC4 (char C[])
{
int i = -1, n = 0, k, j = 0;
do{
k = 0;
i++;
while( ( C[i] != ' ' ) && ( C[i] != '\0') )
{
i++;
k++;
}//while((C[i]!='') && (C[i]!='\0'))
if(k == 4)
{
n++;
j = i - 5;
while(j == i);
{
C[j++] = '*';
}
}//if(k==4)
}while(C[i] != '\0');
printf("\nEsta es la cantidad de palabras con 4 letras:%d\n",n);
printf("\nEsta es la Cadena:\n");
for(i = 0;C[i] != '\0';i++)
{
printf("%c", C[i]);
}//for(i = 0;C[i] != '\0';i++)
}

Última edición por momia_lab2; 16/10/2012 a las 14:11 Razón: no se lograba ver todo el contenido
  #2 (permalink)  
Antiguo 20/10/2012, 02:19
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 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.

Etiquetas: asterisco, ciclos, lenguajec, universidad
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 01:52.