Skip to content

Commit

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

## 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 4, 2024
1 parent 0280411 commit 31f613e
Showing 1 changed file with 109 additions and 0 deletions.
109 changes: 109 additions & 0 deletions Retos/Reto #24 - CIFRADO CÉSAR [Fácil]/c/FranzxFernandez.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
* Crea un programa que realize el cifrado César de un texto y lo imprima.
* También debe ser capaz de descifrarlo cuando así se lo indiquemos.
*
* Te recomiendo que busques información para conocer en profundidad cómo
* realizar el cifrado. Esto también forma parte del reto.
*/

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

static char *cifrado(char *texto, int desplazamientos);
static char *descifrado(char *texto_cifrado, int desplazamientos);

int main()
{
char *texto = "Hola";
char *texto1 = "ABCDEF";
char *texto2 = "Hola, soy leon ";

int desplazamientos = 2, desplazamientos1 = 5, desplazamientos2 = 3;

char *msg_cifrado = cifrado(texto, desplazamientos);
char *msg_descifrado = descifrado(msg_cifrado, desplazamientos);

char *msg_cifrado1 = cifrado(texto1, desplazamientos1);
char *msg_descifrado1 = descifrado(msg_cifrado1, desplazamientos1);

char *msg_cifrado2 = cifrado(texto2, desplazamientos2);
char *msg_descifrado2 = descifrado(msg_cifrado2, desplazamientos2);



printf("- Mensaje original: %s\n", texto);
printf("- Mensaje cifrado: %s\n", msg_cifrado);
printf("- Mensaje descifrado: %s\n",msg_descifrado);
printf("\n");

printf("- Mensaje original: %s\n", texto1);
printf("- Mensaje cifrado: %s\n", msg_cifrado1);
printf("- Mensaje descifrado: %s\n",msg_descifrado1);
printf("\n");

printf("- Mensaje original: %s\n", texto2);
printf("- Mensaje cifrado: %s\n", msg_cifrado2);
printf("- Mensaje descifrado: %s\n",msg_descifrado2);

free(msg_cifrado);
free(msg_descifrado);
free(msg_cifrado1);
free(msg_descifrado1);
free(msg_cifrado2);
free(msg_descifrado2);

return 0;
}

static char *cifrado(char *texto, int desplazamientos)
{
char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
int n = strlen(texto), j = 0;

char *cifrado = (char *)malloc((n + 1) * sizeof(char)); // n * 1B

for (int i = 0; texto[i] != '\0'; i++)
{
char ch = tolower(texto[i]);
if (ch >= 'a' && ch <= 'z')
{
int position = (ch - 'a'); // 104(h) - 97(a) = 7
int result = (position + desplazamientos) % 26; // 10
cifrado[j++] = alphabet[result];
}
else
{
cifrado[j++] = ch; // Para comas, espacios, puntos etc.
}
}
cifrado[j] = '\0';

return cifrado;
}
static char *descifrado(char *texto_cifrado, int desplazamientos)
{
char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
int n = strlen(texto_cifrado), j = 0;

char *descifrado = (char *)malloc((n + 1) * sizeof(char)); // n * 1B

for (int i = 0; texto_cifrado[i] != '\0'; i++)
{
char ch = tolower(texto_cifrado[i]);
if (ch >= 'a' && ch <= 'z')
{
int position = (ch - 'a');
int result = (position - desplazamientos) % 26;
descifrado[j++] = alphabet[result];
}
else
{
descifrado[j++] = ch; // Para comas, espacios, puntos etc.
}
}
descifrado[j] = '\0';

return descifrado;
}

0 comments on commit 31f613e

Please sign in to comment.