Está en la página 1de 6

Martínez Maldonado Sebastián Grupo: 1MV1 13/11/2020

Práctica No. 3.1: encriptar una cadena


1. Investiga por lo menos 10 funciones sobre cadenas.

Función Descripción Sintaxis


Se utiliza para copiar una cadena de
caracteres (fuente) en el lugar que
ocupaba otra (destino). Todos los
strcpy: caracteres que estaban en la cadena strcpy( <variable_destino>, <cadena_fuente> )
destino desaparecen, aunque la
cadena destino fuera más larga que la
cadena fuente.
Esta función copia una cadena
strcat: (fuente) en otra (destino) sin destruir strcat( <cadena_destino>, <cadena_fuente> )
ésta, es decir, que copia una cadena
detrás de la otra.
Esta función devuelve el total (entero)
strlen: de caracteres que conforman una strcpy( <variable_destino>, <cadena_fuente> )
cadena (excluyendo el carácter nulo
\0).
La función strcmp recibe dos
cadenas, a y b, devuelve un entero. El
entero que resulta de efectuar la
llamada strcmp (a, b) codifica el
strcmp: resultado de la comparación: strcmp(<cadena_1>, <cadena_2>)
Es menor que cero si la cadena a es
menor que b.
Es 0 si la cadena a es igual que b.
Es mayor que cero si la cadena a es
mayor que b..
Devuelve un entero cualquiera
distinto de cero si el carácter es una
isalnum: letra o dígito. isalnum(<variable >)
Devuelve el valor entero 0 en caso
contrario.
Devuelve un entero cualquiera
distinto de cero si el carácter es una
isalpha: letra. isalpha(<variable >)
Devuelve el valor entero 0 en caso
contrario.
Devuelve un entero cualquiera
distinto de cero si el carácter es un
isblank: espacio en blanco o un tabulador. isblank(<variable >)
Devuelve el valor entero 0 en caso
contrario.
Devuelve un entero cualquiera
distinto de cero si el carácter es un
isdigit: dígito. isdigit(<variable >)
Devuelve el valor entero 0 en caso
contrario.
Martínez Maldonado Sebastián Grupo: 1MV1 13/11/2020

Devuelve un entero cualquiera


distinto de cero si el carácter es un
isspace: espacio en blanco, un salto de línea, isspace(<variable >)
un retorno de carro, un tabulador, etc.
Devuelve el valor entero 0 en caso
contrario.
Devuelve la mayúscula asociada al
toupper: carácter, si la tiene; si no, devuelve el toupper(<variable >)
mismo carácter.

2. Escribir un programa en Lenguaje C:


Codificar un programa que encripte un texto.
Deberá incluir un menú para que el usuario elija entre las opciones:
1. Escribir cadena
2. Imprimir la cadena encriptada
3. Des encriptar cadena e imprimir
4. Continuar en el programa o salir de él

 Código

#include <iostream>
#include <string.h>
#include <conio.h>

/*
* El programa será capaz de crear recibir una cadena de texto,
* encriptar esa cadena y, si se desea, des encriptarla un numero
* infinito de veces hasta que se desee salir del programa
*/

using namespace std;

int main()
{
char cadena[100] = {'\0'}; // Cadena a Encriptar
char cadenaE[100] = {'\0'}; // Cadena Encriptada
char cadenaDE[100] = {'\0'}; // Cadena Des encriptada
char Restriccion[100] = {'\0'}; // Cadena vacia para limitar

char Q = '0';

int x; // Variable de longitud de Cadena


Martínez Maldonado Sebastián Grupo: 1MV1 13/11/2020

do
{
cout << "Bienvenido Guardador de Secretos" << "\n\n";
cout << "Elige alguna de las siguientes opciones para continuar" << "\n";
cout << "1. Escribir cadena" << "\n";
cout << "2. Encriptar cadena" << "\n";
cout << "3. Des encriptar cadena" << "\n";
cout << "4. Salir del programa" << "\n";
Q = getch();

if (Q == '4')
break;

cout << "\n";

switch (Q)
{
case '1': // Lee la cadena a Encriptar
memset(cadena, 0, 100); // Borra la anterior cadena introducida

cout << "Escribe la cadena a encriptar: ";


gets(cadena);
cout << "\n" << "La nueva cadena se ha guardado correctamente.";
break;

case '2': // Encripta la cadena introducida


if (!strcmp(cadena, Restriccion)) // Verificacion de existencia de cadena
{
cout << "No se ha guardado ninguna cadena";
break;
}

else
{
x = strlen(cadena);

memset(cadenaE, 0, 100); // Borra la anterior cadena encriptada

for (int i = 0; i < x; i++)


{
If (cadena[i] == 'X')
cadenaE[i] = 'A';

else if (cadena[i] == 'x')


cadenaE[i] = 'a';

else if (cadena[i] == 'Y')


cadenaE[i] = 'B';

else if (cadena[i] == 'y')


cadenaE[i] = 'b';
Martínez Maldonado Sebastián Grupo: 1MV1 13/11/2020

else if (cadena[i] == 'Z')


cadenaE[i] = 'C';

else if (cadena[i] == 'z')


cadenaE[i] = 'c';

//Se asegura de solo codificar letras (Mayusculas o Minusculas)

else if (((cadena[i] >= 65) && (cadena[i] <= 90)) || ((cadena[i] >= 97) &&
(cadena[i] <= 122)))
cadenaE[i] = cadena[i] + 3;

else
cadenaE[i] = cadena[i];
}

cout << "La cadena encriptada es: " << cadenaE;

cout << "\n\n" << "La nueva cadena encriptada se ha guardado


correctamente.";
break;
}

case '3': // Des encripta la cadena

if (!strcmp(cadenaE, Restriccion)) // Verificacion de existencia de cadena


{
cout << "No se ha encriptado ninguna cadena.";
break;
}

else
{
memset(cadenaDE, 0, 100); // Borra la anterior cadena des encriptada

x = strlen(cadenaE);

for (int i = 0; i < x; i++)


{
If (cadenaE[i] == 'A')
cadenaDE[i] = 'X';

else if (cadenaE[i] == 'a')


cadenaDE[i] = 'x';

else if (cadenaE[i] == 'B')


cadenaDE[i] = 'Y';

else if (cadenaE[i] == 'b')


cadenaDE[i] = 'y';
Martínez Maldonado Sebastián Grupo: 1MV1 13/11/2020

else if (cadenaE[i] == 'C')


cadenaDE[i] = 'Z';

else if (cadenaE[i] == 'c')


cadenaDE[i] = 'z';

//Se asegura de solo descodificar letras (Mayusculas o Minusculas)

else if (((cadenaE[i] >= 65) && (cadenaE[i] <= 90)) || ((cadenaE[i] >=
97) && (cadenaE[i] <= 122)))
cadenaDE[i] = cadenaE[i] - 3;

else
cadenaDE[i] = cadenaE[i];
}

cout << "La ultima cadena encriptada es: " << cadenaE;
cout << "\n" << "La cadena des encriptada es: " << cadenaDE;

cout << "\n\n" << "La nueva cadena des encriptada se ha guardado
correctamente.";
break;
}

default: cout << "Elija una opcion de las que se muestran.";


}

cout << "\n\n" << "Presione cualquier tecla para continuar.";


getch();

system("cls");

}while (Q != '4');

return 0;

}
Martínez Maldonado Sebastián Grupo: 1MV1 13/11/2020

 Resultado

También podría gustarte