Pongo el código por si alguien quiere verlo:
Código C:
Ver original
#include <stdio.h> #include <stdlib.h> #include <string.h> #define TAM 100 #define TAM_CLAVE 5 enum {encript=1,decript}; //--------------------------------------------------------------------------- void solicitar_frase(char *cadena) { //TITULO } //--------------------------------------------------------------------------- int solicitar_accion(void) { int op; return op; } //--------------------------------------------------------------------------- //Esta funcion da el formato correcto y ademas retorna el largo de la cadena formateada int dar_formato(const char *original, char *formateada, const int size_clave) { int i=0,j=0,caracteres_restantes=0; while (original[i]!='\0' && original[i]!='\n') { if (original[i]==' ') { i++; } formateada[j]=original[i]; i++; j++; } if(j%size_clave!=0) caracteres_restantes =size_clave-(j%size_clave); for (i=0;i<caracteres_restantes;i++) { formateada[j]='X'; j++; } formateada[j]='\0'; return j; } //--------------------------------------------------------------------------- void encriptar (const char *cadena, const int largo, const int clave[], const int size_clave) { int i,j,k=0,l=0; char *aux; for (i=0;i<largo;i++) { aux[k]=cadena[l*size_clave + clave[k]-1]^clave[k]; if (k==size_clave-1){ for (j=0; j<size_clave;j++) { cadena[l*size_clave + j]=aux[j]; } l++; k=0; }else{ k++; } } } //--------------------------------------------------------------------------- void desencriptar (const char *cadena, const int largo, const int clave[], const int size_clave) { int i,j,k=0,l=0; char *aux; for (i=0;i<largo;i++) { aux[clave[k]-1]=cadena[i]^clave[k]; if (k==size_clave-1){ for (j=0; j<size_clave;j++) { cadena[l*size_clave + j]=aux[j]; } l++; k=0; }else{ k++; } } } //--------------------------------------------------------------------------- int main(int argc, char* argv[]) { //Variables necesaria const int clave[TAM_CLAVE]={4,3,5,2,1}; //los arrais de enteros no necesitan un espacio extra como pasa con los arrais de caracteres char frase[TAM]; char frasenueva[TAM]; int largo,accion; switch(argc) { case 1: //Obtengo la cadena solicitar_frase(frase); //doy formato a la frase largo=dar_formato(frase,frasenueva,TAM_CLAVE); //Solicito la accion a realizar con dicha frase do{ accion=solicitar_accion(); }while(accion != encript && accion != decript); switch(accion) { case encript: encriptar(frasenueva,largo,clave,TAM_CLAVE); break; case decript: desencriptar(frasenueva,largo,clave,TAM_CLAVE); break; } break; case 3: //doy formato a la frase largo=dar_formato(argv[2],frasenueva,TAM_CLAVE); { //la desencripto desencriptar(frasenueva,largo,clave,TAM_CLAVE); //la encripto encriptar (frasenueva,largo,clave,TAM_CLAVE); }else{ } break; default: } return 0; } //---------------------------------------------------------------------------