Skip to content

Commit

Permalink
Reto mouredev#19 - c
Browse files Browse the repository at this point in the history
## 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).

## 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).
  • Loading branch information
FranzxFernandez committed Jan 10, 2024
1 parent 240fce0 commit ed469b8
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions Retos/Reto #19 - ANÁLISIS DE TEXTO [Media]/c/FranzxFernandez.c
Original file line number Diff line number Diff line change
@@ -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 <stdio.h>
#include <string.h>
#include <ctype.h>

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);
}

0 comments on commit ed469b8

Please sign in to comment.