Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ejercicio 1 - Función STRREV
- La función strrev en C permite invertir una cadena, pero lamentablemente no es una función portable. Implemente la función strrev que tiene el siguiente prototipo:
- char *strrev (char *cadena);
- La función recibe una cadena la invierte y retorna la misma cadena modificada.
- OBSERVACIÓN : NO PUEDE USAR NINGUNA FUNCIÓN DE LA BIBLIOTECA STRING.H, ya que no fue incluida en el programa que probará la efectividad de su función strrev.
- ==============================================================================
- char *strrev (char *cadena){
- int aux = 0;
- int largo;
- int i, j;
- char swap;
- while(cadena[aux] != '\0'){ //Calcula el largo de la cadena
- aux++;
- }
- largo = aux - 1;
- j = largo;
- for(i = 0; i < j; i++){ //Ciclo que va volteando la cadena
- swap = cadena[i];
- cadena[i] = cadena[j];
- cadena[j] = swap;
- j--;
- }
- return cadena;
- }
- ==========================================================================
- EJERCICIO 2 - Función STRCMP
- Escriba su propia función para comparar cadenas !. El protipo de esta función debe ser :
- int mi_strcmp ( const char * cadena1, const char * cadena2 );
- Esta función recibe 2 cadenas : cadena1 y cadena2, y las compara carácter a carácter, retornando un valor igual a 0 si cadena 1 y cadena2 son iguales, un valor menor a 0 si cadena1 es menor que cadena2, y un valor mayor a cero si cadena1 es mayor que cadena2.
- OBSERVACIÓN : NO PUEDE USAR NINGUNA FUNCIÓN DE LA BIBLIOTECA STRING.H, ya que no fue incluida en el programa que probará la efectividad de su función mi_strcmp .
- ========================================================================
- int mi_strcmp (const char * cadena1, const char * cadena2 ){
- int resto = 0;
- int i = 0;
- int aux1, aux2;
- while((cadena1[i] != '\0') || (cadena2[i] != '\0')){
- if(cadena1[i] != cadena2[i]){
- aux1 = cadena1[i];
- aux2 = cadena2[i];
- resto = aux1 - aux2;
- break;
- }
- i++;
- }
- return resto;
- }
- ===========================================================================
- EJERCICIO 3 - Criptografía Básica
- Un cifrado es un medio para ocultar un mensaje. Una de las técnicas más básicas de cifrado consiste en utilizar un abecedario alterado y sustituir las letras del mensaje a encriptar por las letras que ocupan la misma posición en el abecedario alterado. Implemente la siguiente función en C :
- void descifrar(char *cadenaCifrada, char *abcedarioAlterado);
- La función recibe una cadena que contiene un mensaje cifrado y el abecedario alterado. La función debe descifrar el mensaje e imprimir su contenido. Considere que la cadena tiene como máximo 1000 caracteres (sin considerar el carácter NULO).
- Ejemplo :
- char abcedarioNormal[27] = "abcdefghijklmnopqrstuvwxyz";
- char abcedarioAlterado[27] = "qwertyuiopasdfghjklzxcvbnm";
- char cadena[] = "lt rtleoykqk";
- La impresión será : "se descifrar"
- ==============================================================================
- void descifrar(char *cadenaCifrada, char *abcedarioAlterado){
- int i, n, c;
- char copia;
- char abcedarioNormal[27] = "abcdefghijklmnopqrstuvwxyz";
- n = strlen(cadenaCifrada); //Mide el largo del texto
- char traduccion[n];
- for(i = 0; i < n; i++){
- if(isalpha(cadenaCifrada[i])){
- copia = cadenaCifrada[i];
- if(isupper(copia)){ //Si es el caracter es mayuscula, convierte una copia en minuscula para poder trabajar con el
- copia = tolower(copia);
- }
- c = strchr(abcedarioAlterado, copia) - abcedarioAlterado; //Busca el caracter en el tecladoA y da su posicion de memoria, luego lo resta con el largo de la cadena para poder traducirlo
- traduccion[i] = abcedarioNormal[c];
- if(isupper(cadenaCifrada[i])){ //Si el caracter era mayuscula inicialmente, lo vuelve a convertir
- traduccion[i] = toupper(traduccion[i]);
- }
- }
- else{
- traduccion[i] = cadenaCifrada[i]; //Si es un caracter no alfabetico de queda igual
- }
- }
- for(i = 0; i < n; i++){
- printf("%c",traduccion[i]); //Imprime la traduccion
- }
- }
- //FUN FACT EL CÓDIGO ES EXACTAMENTE EL MISMO QUE MI OTRO PASTE, EL EJ 1 DE CADENAS
- ==============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement