Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.37 KB | None | 0 0
  1. void desencriptar(FILE *entrada, FILE **salida){
  2.     //VARIABLES Y CADENAS A UTILIZAR
  3.     char palabra;
  4.     char AbcedarioMinus[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  5.     char AbcedarioMayus[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
  6.     int movimientos;
  7.     int j;
  8.     int indiceAux;
  9.    
  10.     //PEDIMOS LA CANTIDAD DE MOVIMIENTOS QUE REALIZAREMOS
  11.     fscanf(entrada,"%d", &movimientos);
  12.     //SE OCUPA EL GETCHAR PARA ELIMINAR EL SALTO DE LINEA QUE DEJO LOS MOVIMIENTOS
  13.     while(getchar() != '\n');
  14.     //MIENTRAS HAYAN PALABRAS QUE ANALIZAR SEGUIRA
  15.     while((palabra=fgetc(entrada))!=EOF){
  16.         indiceAux=0;
  17.         //SI LOS MOVIMIENTOS SON 0 DIRECTAMENTE ENTREGAMOS LAS PALABRAS A SALIDA
  18.         if(movimientos==0)
  19.             fprintf(*salida,"%c",palabra);
  20.         else{
  21.             //FOR PARA RECORRER LAS CADENAS QUE CONTIENEN EL ABCEDARIO
  22.             for(j=0;j<26;j++){
  23.                 //SI PERTENECE AL ALFABETO SEGUIRA
  24.                 if(isalpha(palabra)){
  25.                     //SI LA LETRA ES MINUSCULA ENTRARA
  26.                     if(palabra==AbcedarioMinus[j]){
  27.                         //GUARDARA LA POSICION EN CUAL ESTA LA LETRA EN EL ABCEDARIO MAS LOS MOVIMIENTOS QUE SE DEBEN HACER
  28.                         indiceAux=j+movimientos;
  29.                         //SE REALIZA EL SIGUIENTE PROCEDIMIENTO MIENTRAS EL INDICEAUX SEA MENOR A 0 Y MAYOR O IGUAL A 26
  30.                         do{
  31.                             if(indiceAux<0){                                    
  32.                                 indiceAux=26+indiceAux;
  33.                             }
  34.                             else if(indiceAux>=26){
  35.                                 indiceAux=indiceAux-26;
  36.                             }
  37.                         }while((indiceAux<0) || (indiceAux>=26));
  38.                         //SE ENTREGA A SALIDA LA LETRA MINUSCULA CORRESPONDIENTE
  39.                         fprintf(*salida,"%c",AbcedarioMinus[indiceAux]);
  40.                     }
  41.                     else{
  42.                         //SI LA LETRA ES MAYUSCULA ENTRARA
  43.                         if(palabra==AbcedarioMayus[j]){  
  44.                             //GUARDARA LA POSICION EN CUAL ESTA LA LETRA EN EL ABCEDARIO MAS LOS MOVIMIENTOS QUE SE DEBEN HACER
  45.                             indiceAux=j+movimientos;
  46.                             //SE REALIZA EL SIGUIENTE PROCEDIMIENTO MIENTRAS EL INDICEAUX SEA MENOR A 0 Y MAYOR O IGUAL A 26
  47.                             do{
  48.                                 if(indiceAux<0){
  49.                                     indiceAux=26+indiceAux;
  50.                                 }
  51.                                 else if(indiceAux>=26){
  52.                                     indiceAux=indiceAux-26;
  53.                                 }
  54.                             }while((indiceAux<0) || (indiceAux>=26));
  55.                             //SE ENTREGA A SALIDA LA LETRA MAYUSCULA CORRESPONDIENTE
  56.                             fprintf(*salida,"%c",AbcedarioMayus[indiceAux]);
  57.                         }
  58.                     }
  59.                 }
  60.                 else{
  61.                     //SI NO PERTENECE AL ALFABETO ENTREGARA EL CARACTER A SALIDA
  62.                     fprintf(*salida,"%c",palabra);
  63.                     break;
  64.                 }
  65.             }
  66.         }
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement