From ed469b8a0c9ca69a35b5ce5d1938266317a08e1c Mon Sep 17 00:00:00 2001 From: Franz Fernandez Cobarrubia Date: Wed, 10 Jan 2024 17:04:34 +0100 Subject: [PATCH] =?UTF-8?q?Reto=20#19=20-=20c=20##=20Describe=20tus=20camb?= =?UTF-8?q?ios=20***(Opcional)***=20*Sobre=20todo=20aconsejable=20si=20la?= =?UTF-8?q?=20"Pull=20Request"=20se=20corresponde=20con=20una=20correcci?= =?UTF-8?q?=C3=B3n=20adicional=20y=20no=20con=20la=20presentaci=C3=B3n=20d?= =?UTF-8?q?e=20un=20ejercicio.*?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Comprobaciones Asegúrate de cumplir los siguientes puntos antes de realizar la "Pull Request": - [ ] El título de mi Pull Request sigue este formato: "Reto #[número] - [lenguaje_utilizado]". *(Ej: Reto #0 - Kotlin")* - [ ] El nombre el fichero que se corresponde con el de mi usuario en GitHub más la extensión del lenguaje. *(Ej: mouredev.kt)* - [ ] El fichero de corrección se encuentra dentro del directorio del ejercicio y en una carpeta con el nombre del lenguaje de programación utilizado en minúsculas. *(Ej: Reto #0/kotlin/mouredev.kt)* - [ ] He revisado que el nombre del directorio del lenguaje no es conflictivo: - c#, no csharp - c++, no cplusplus - go, no golang - javascript, no js - [ ] Únicamente he incluído los ficheros de ejercicios. No se aceptarán Pull Requests que contengan archivos adicionales asociados a editores de código o semejantes. ## Información * Tienes toda la información sobre los retos semanales en [retosdeprogramacion.com/semanales2023](https://retosdeprogramacion.com/semanales2023). * Cada semana se realizará la corrección en directo y publicación de un nuevo reto en [twitch.tv/mouredev](https://twitch.tv/mouredev). * Recuerda que tienes un grupo de apoyo llamado "reto-semanal" en [Discord](https://discord.gg/mouredev). ## Describe tus cambios ***(Opcional)*** *Sobre todo aconsejable si la "Pull Request" se corresponde con una corrección adicional y no con la presentación de un ejercicio.* ## Comprobaciones Asegúrate de cumplir los siguientes puntos antes de realizar la "Pull Request": - [ ] El título de mi Pull Request sigue este formato: "Reto #[número] - [lenguaje_utilizado]". *(Ej: Reto #0 - Kotlin")* - [ ] El nombre el fichero que se corresponde con el de mi usuario en GitHub más la extensión del lenguaje. *(Ej: mouredev.kt)* - [ ] El fichero de corrección se encuentra dentro del directorio del ejercicio y en una carpeta con el nombre del lenguaje de programación utilizado en minúsculas. *(Ej: Reto #0/kotlin/mouredev.kt)* - [ ] He revisado que el nombre del directorio del lenguaje no es conflictivo: - c#, no csharp - c++, no cplusplus - go, no golang - javascript, no js - [ ] Únicamente he incluído los ficheros de ejercicios. No se aceptarán Pull Requests que contengan archivos adicionales asociados a editores de código o semejantes. ## Información * Tienes toda la información sobre los retos semanales en [retosdeprogramacion.com/semanales2023](https://retosdeprogramacion.com/semanales2023). * Cada semana se realizará la corrección en directo y publicación de un nuevo reto en [twitch.tv/mouredev](https://twitch.tv/mouredev). * Recuerda que tienes un grupo de apoyo llamado "reto-semanal" en [Discord](https://discord.gg/mouredev). ## Describe tus cambios ***(Opcional)*** *Sobre todo aconsejable si la "Pull Request" se corresponde con una corrección adicional y no con la presentación de un ejercicio.* ## Comprobaciones Asegúrate de cumplir los siguientes puntos antes de realizar la "Pull Request": - [ ] El título de mi Pull Request sigue este formato: "Reto #[número] - [lenguaje_utilizado]". *(Ej: Reto #0 - Kotlin")* - [ ] El nombre el fichero que se corresponde con el de mi usuario en GitHub más la extensión del lenguaje. *(Ej: mouredev.kt)* - [ ] El fichero de corrección se encuentra dentro del directorio del ejercicio y en una carpeta con el nombre del lenguaje de programación utilizado en minúsculas. *(Ej: Reto #0/kotlin/mouredev.kt)* - [ ] He revisado que el nombre del directorio del lenguaje no es conflictivo: - c#, no csharp - c++, no cplusplus - go, no golang - javascript, no js - [ ] Únicamente he incluído los ficheros de ejercicios. No se aceptarán Pull Requests que contengan archivos adicionales asociados a editores de código o semejantes. ## Información * Tienes toda la información sobre los retos semanales en [retosdeprogramacion.com/semanales2023](https://retosdeprogramacion.com/semanales2023). * Cada semana se realizará la corrección en directo y publicación de un nuevo reto en [twitch.tv/mouredev](https://twitch.tv/mouredev). * Recuerda que tienes un grupo de apoyo llamado "reto-semanal" en [Discord](https://discord.gg/mouredev). --- .../c/FranzxFernandez.c" | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 "Retos/Reto #19 - AN\303\201LISIS DE TEXTO [Media]/c/FranzxFernandez.c" diff --git "a/Retos/Reto #19 - AN\303\201LISIS DE TEXTO [Media]/c/FranzxFernandez.c" "b/Retos/Reto #19 - AN\303\201LISIS DE TEXTO [Media]/c/FranzxFernandez.c" new file mode 100644 index 0000000000..80d8e5ad39 --- /dev/null +++ "b/Retos/Reto #19 - AN\303\201LISIS DE TEXTO [Media]/c/FranzxFernandez.c" @@ -0,0 +1,90 @@ +/* + * Crea un programa que analice texto y obtenga: + * - Número total de palabras. + * - Longitud media de las palabras. + * - Número de oraciones del texto (cada vez que aparecen un punto). + * - Encuentre la palabra más larga. + * + * Todo esto utilizando un único bucle. + */ + +#include +#include +#include + +static void solve(const char *texto); + +int main(int argc, char const *argv[]) +{ + // Test case 1: + const char *texto = "Hola Mundo. Esto es un programa."; + solve(texto); + printf("\n"); + + // Test case 2: + const char *texto_2 = "Hello World. This is a test."; + solve(texto_2); + printf("\n"); + + // Test case 3: + const char *texto_3 = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; + solve(texto_3); + printf("\n"); + + // Test case 4: + const char *texto_4 = "SingleWord"; + solve(texto_4); + printf("\n"); + + return 0; +} + +static void solve(const char *texto) +{ + int max_espacios = 0; + char palabra[100] = {0}; + + int word_length = 0; + int counter = 0, palabras = 1, longitud_media = 0, letras = 1, oraciones = 0; + int max_longitud = 0; + char palabra_mas_larga[100] = {0}; + + while (texto[counter] != '\0') // solo un bucle + { + if (texto[counter] != ' ' && texto[counter] != '.' && texto[counter] != ',') + { + palabra[word_length++] = texto[counter]; + } + else + { + if (texto[counter] == ' ') + { + palabras++; + } + if (word_length > max_longitud) + { + max_longitud = word_length; + strncpy(palabra_mas_larga, palabra, word_length); + } + word_length = 0; + } + if (isalpha(texto[counter])) + { + letras++; + } + if (texto[counter] == '.') + { + oraciones++; + } + + counter++; + } + longitud_media = letras / palabras; + + printf("El numero total de palabras son: %d\n", palabras); + printf("La longitud media de las palabras son: %d\n", longitud_media); + printf("El numero de oraciones son: %d\n", oraciones); + + palabra_mas_larga[max_longitud] = '\0'; + printf("La palabra mas larga es: %s\n", palabra_mas_larga); +} \ No newline at end of file