<mosaic.cnfolio.com>
PROGRAM
  1. #include <stdio.h>
  2.  
  3. /* Pseudo Code
  4.  
  5.    Start
  6.        
  7.         Obtain CipherLength Input
  8.         Obtain CipherKey Input
  9.         Obtain TextLength Input
  10.         Obtain Text Input
  11.        
  12.         Validate CipherLength Input
  13.         Validate Cipherkey Input
  14.         Validate TextLength Input
  15.         Validate Text Input
  16.        
  17.          
  18.         Move to first letter in Text array, replace with first letter in CipherKey array
  19.              Print Step no. and correction
  20.              
  21.         Move to next position in array and repeat
  22.              
  23.              If at last position in array, Print final Step No. and correction
  24.                   Return
  25.                  
  26.    End
  27.                    
  28. */
  29.  
  30. int main()
  31.    
  32.    {
  33.    
  34.    
  35.     //Inputs
  36.    
  37.     int counter = 0;
  38.     int CipherLength;
  39.     int TextLength;
  40.    
  41.     char CipherKey[16];
  42.     char Text[256];
  43.     char Text2[256];
  44.     char CipherKeyCheck;
  45.     char TextCheck;
  46.  
  47.    
  48.    
  49.     //Obtaining Inputs
  50.    
  51.     scanf("%d", &CipherLength);
  52.    
  53.     scanf("%s", &CipherKey);
  54.    
  55.     scanf("%d", &TextLength);
  56.    
  57.     scanf("%s", &Text);
  58.    
  59.     strcpy(Text2, Text);
  60.    
  61.    
  62.     //Error Checking
  63.  
  64.  
  65.     if(CipherLength < 2 || CipherLength > 16) {
  66.         printf("Invalid CipherLength");
  67.         return 0;
  68.     }
  69.  
  70.  
  71.     if(TextLength < 4 || TextLength > 256) {
  72.         printf("Invalid TextLength");
  73.         return 0;
  74.     }
  75.    
  76.    
  77.     //Replacing Text with Cipher Key
  78.  
  79.     for(CipherKeyCheck = 0; CipherKeyCheck < CipherLength; CipherKeyCheck++) {
  80.         counter++;
  81.        
  82.        for(TextCheck = 0; TextCheck < TextLength; TextCheck++) {
  83.            
  84.            if(Text[TextCheck] == CipherKey[CipherKeyCheck]) {
  85.               Text2[TextCheck] = CipherKey[CipherKeyCheck + 1];
  86.                
  87.            }   
  88.                
  89.            if(CipherKeyCheck == CipherLength - 1){
  90.                        
  91.               for(TextCheck = 0; TextCheck < TextLength; TextCheck++){
  92.                  if(Text[TextCheck] == CipherKey[CipherKeyCheck]){
  93.                     Text2[TextCheck] = CipherKey[0];
  94.                                    
  95.                     printf("Step %d, replacing %c with %c\n", counter, CipherKey[CipherKeyCheck], CipherKey[0]);
  96.                     printf("%s\n", Text2);
  97.                     return;
  98.                     }
  99.                  }
  100.            }
  101.                
  102.                
  103.            
  104.         }
  105.        
  106.        
  107.                     printf("Step %d, replacing %c with %c\n", counter, CipherKey[CipherKeyCheck], CipherKey[CipherKeyCheck + 1]);
  108.                     printf("%s\n", Text2);
  109.     }
  110.    
  111.    
  112.    
  113.    
  114.    
  115.    
  116.    
  117.    
  118.    
  119.    
  120.     }