Skip to content

Commit

Permalink
Reto #9 - 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).

## 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 1, 2024
1 parent 5b06c09 commit 52fc329
Showing 1 changed file with 107 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
/*
* Crea 3 funciones, cada una encargada de detectar si una cadena de
* texto es un heterograma, un isograma o un pangrama.
* - Debes buscar la definición de cada uno de estos términos.
*/

/* - heterograma: Un heterograma es una palabra o frase en la que no se repite ninguna letra. Esto significa que cada letra en la palabra o frase aparece solo una vez. Por ejemplo, la palabra "murciélago" es un heterograma en español, ya que ninguna letra se repite.*/

/* - isograma: Un isograma es similar a un heterograma, pero se aplica específicamente a palabras o frases en las que no se repite ninguna letra, incluyendo espacios y signos de puntuación. Por lo tanto, un isograma puede contener varios espacios y caracteres especiales sin repetir ninguna letra. "*/

/* - pangrama: Un pangrama es una frase o texto que contiene todas las letras del alfabeto al menos una vez. En otras palabras, un pangrama utiliza cada letra posible del idioma en el que está escrito.
*/

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

static bool isHeterograma_Isograma(char *str);
static bool isIsograma(char *str);
static bool isPangrama(char *str);
static int string_len(char *str);
char *make_lower_case(char *str);

int main(int argc, char const *argv[])
{
char *msg = make_lower_case("murciélago");
char *msg2 = make_lower_case("El veloz murcielago hindu comía feliz cardillo y kiwi");

printf("Es un heterograma: %d\n", isHeterograma_Isograma(msg)); // 1 = True | 0 = False
printf("Es un pangrama: %d\n", isPangrama(msg2)); // 1 = True | 0 = False

free(msg);
free(msg2);
return 0;
}

static int string_len(char *str)
{
int count = 0;
while (str[count] != '\0')
{
count++;
}

return count;
}
char *make_lower_case(char *str)
{
int n = string_len(str);
char *tolower = (char *)malloc(n * sizeof(char)); // n * 1B

for (int i = 0; str[i] != '\0'; i++)
{
if (str[i] >= 'A' && str[i] <= 'Z')
{
tolower[i] = str[i] + 32; // Upper Case to Lower Case
}
else
{
tolower[i] = str[i];
}
}
tolower[n] = '\0';

return tolower;
}
static bool isHeterograma_Isograma(char *str)
{
int n = string_len(str);

for (int i = 0; i < n; i++)
{
for (int j = i + 1; j <= n; j++)
{
if (str[j] == str[i])
{
return false;
}
}
}
return true;
}
static bool isPangrama(char *str)
{
int n = string_len(str);
int idx = 0;
bool letter_found[26] = {false};

for (int i = 0; i < n; i++)
{
if (str[i] >= 'a' && str[i] <= 'z')
{
idx = str[i] - 'a';
letter_found[idx] = true;
}
}

for (int i = 0; i < 26; i++)
{
if (!letter_found[i])
{
return false;
}
}

return true;
}

0 comments on commit 52fc329

Please sign in to comment.