Título: Arreglar código poner puntos suspensivos entre palabras Publicado por: jmunto en 2 Febrero 2022, 12:34 pm El programa debe mostrar la frase en la consola con puntos suspensivos entre las palabras dependiendo del nivel de velocidad que escoja el usuario. Si escogen 2 se pondrán puntos suspensivos después de cada palabra, i si escoge 1 se pondrán puntos suspensivos cada dos palabras. Este es el código que he hecho pero no funciona como deberia.
#include <stdio.h> #include <stdlib.h> int main() { char frase[500]; char frase_lenta[500]; int i; int j; int paraula; int op; i=0; j=0; paraula = 0; printf ("introduce una frase\n"); fgets (frase,500,stdin); printf ("escoge la velocidad de tu frase 1 = lento 2 = muy lento\n"); scanf("%d",&op); //printf("%s",frase); if (op == 2) { while (frase!= '.') { if (frase!= ' ') { frase_lenta[j] = frase ; i++; j++; } else { frase_lenta[j]='.'; frase_lenta[j+1]='.'; frase_lenta[j+2]='.'; frase_lenta[j+3]=' '; i++; j= j+4; } } } if(op == 1) { while (frase != '.') { if(frase!= ' ') { frase_lenta[j] = frase ; i++; j++; } else { paraula++; frase_lenta[j] = frase; if (paraula == 2) { frase_lenta[j]='.'; frase_lenta[j+1]='.'; frase_lenta[j+2]='.'; frase_lenta[j+3]=' '; i++; j= j+4; paraula = 0; } i++; j++; } } } printf("%s",frase_lenta); } Título: Re: Arreglar código poner puntos suspensivos entre palabras Publicado por: .xAk. en 2 Febrero 2022, 14:36 pm No lo entiendo, seguro que es culpa mía. Tienes que añadir puntos entre las palabras de la frase, y hay una velocidad que no relaciono. ¿no hay ninguna condición? como que aparezcan los puntos si la frase excede en caracteres. No entiendo el planteamiento.
¿si entro la frase "una frase de ejemplo" y se escoje 2 el resultado tiene que ser "una...frase...de...ejemplo" y si se escoje 1 "una frase...de ejemplo" es eso? Título: Re: Arreglar código poner puntos suspensivos entre palabras Publicado por: jmunto en 2 Febrero 2022, 18:19 pm No lo entiendo, seguro que es culpa mía. Tienes que añadir puntos entre las palabras de la frase, y hay una velocidad que no relaciono. ¿no hay ninguna condición? como que aparezcan los puntos si la frase excede en caracteres. No entiendo el planteamiento. ¿si entro la frase "una frase de ejemplo" y se escoje 2 el resultado tiene que ser "una...frase...de...ejemplo" y si se escoje 1 "una frase...de ejemplo" es eso? Si es como dices al final. Con la frase "el niño corre en el parque", si escojes el numero 2 seria "el... niño... corre... en... el... parque" y si se escoge el numero 1 el resultado seria: "el niño... corre en... el parque". La velocidad es una forma de llamar a la cantidad de puntos suspensivos. Si hay mas parece que habla mas despacio. No hay ninguna condicion simplemente debe mostrar la frase con los puntos. Título: Re: Arreglar código poner puntos suspensivos entre palabras Publicado por: MAFUS en 2 Febrero 2022, 20:49 pm Para 'op == 1', en el else:
· Te sobra la instrucción Código: frase_lenta[j] = frase[i]; · Dentro del Código: if(paraula == 2) De hecho te sugeriría que cambiaras esos j+n por j++ para que el índice se fuera actualizando después de cada cambio. Algo así: Código
Si te fijas hay mucho código que se repite. Después, cuando ya te funcione, podrías refactorizarlo. Título: Re: Arreglar código poner puntos suspensivos entre palabras Publicado por: .xAk. en 3 Febrero 2022, 03:16 am si que se repite y puedes hacerlo de una pasada, cuando compares tienes que hacer comparaciones con el mismo tipo
Código: do { Título: Re: Arreglar código poner puntos suspensivos entre palabras Publicado por: jmunto en 3 Febrero 2022, 12:58 pm Gracias por los aportes. Ahora para (op==2) funciona bien. El problema es que para (op==1) no me hace la frase entera. Por ejemplo: si escribo la frase "el niño corre en el parque hoy".
Me da : "el niño..." i nada mas. I debería dar: "el niño... corre en... el parque... hoy" Mi código es este: Código
Alguna sugerencia de porque no funciona? Título: Re: Arreglar código poner puntos suspensivos entre palabras Publicado por: .xAk. en 3 Febrero 2022, 16:07 pm Ponte una variable booleana y si es muy lenta hazle un activo inactivo para que ponga o no los puntos suspensivos en el siguiente espacio, y si no los pone que ponga el espacio.
Código: variable escribo |