Last active
August 23, 2020 01:56
-
-
Save Edmartt/c179b8e81ed18a8d455e1705e4baa175 to your computer and use it in GitHub Desktop.
Cifrado de César sin caracteres extraños.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <string.h> | |
#include <stdlib.h> | |
#define MAX 100; | |
void cifrar(char*,int); | |
void mostrarMenu(); | |
int main(int argc, char **argv) | |
{ | |
int offset=0; | |
char word[500]; | |
char* ptrword=NULL; | |
printf("Ingrese la palabra a cifrar: "); | |
scanf("%s500",word); | |
ptrword=malloc(strlen(word)); | |
if(ptrword!=NULL) { | |
strcpy(ptrword,word); | |
printf("\nIngrese el desplazamiento de caracteres: "); | |
scanf("%d",&offset); | |
cifrar(ptrword,offset); | |
free(ptrword); | |
} else { | |
printf("\nNo hay suficiente memoria\n"); | |
free(ptrword); | |
return -1; | |
} | |
printf("\n"); | |
return 0; | |
} | |
void cifrar(char* cadena,int offset) | |
{ | |
int dif,car; | |
int len=strlen(cadena); | |
int asciiMay=65,asciiMin=97; | |
for(int i=0; i<len; i++) { | |
if(cadena[i]+offset>90 && cadena[i]<=96) { | |
dif=90-cadena[i]; | |
car=offset-dif; | |
cadena[i]=asciiMay+car-1; | |
} else if(cadena[i]+offset <=90) { | |
cadena[i]=cadena[i]+offset; | |
} else if(cadena[i]+offset>122) { | |
dif=122-cadena[i]; | |
car=offset-dif; | |
cadena[i]=asciiMin+car-1; | |
} else if(cadena[i]<=122) { | |
cadena[i]=cadena[i]+offset; | |
} | |
printf("%c ",cadena[i]); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Así es. En el primer parámetro debes agregarle si o si, el 499, para dejar espacio para el caracter nulo :)