<mosaic.cnfolio.com>
PROGRAM
  1. /*PSUEDO CODE - SIMPLE
  2. Read the amount of characters in the cipher.
  3. Declare an array to the length of the cipher.
  4. Input the cipher into the array.
  5. Declare 2 arrays one for the original input and one for the changing output.
  6. Input the original message into the array.
  7. And into the changed array.
  8. Read first character of the cipher array find it in the text of the original input array as and change it with the substitute character.
  9. Continue to do so until string exceeds max. */
  10.  
  11. /*PSUEDO CODE - COMPLEX
  12.  
  13. START
  14.    ---1ST LINE OF INPUT---
  15. INPUT = Cipher length
  16. IF cipher length > 2 or <16 THEN
  17.    
  18.    ---2ND LINE OF INPUT---
  19.    INPUT = Cipher text
  20.    FOR a(0) to cipher length-2
  21.       b=a+1
  22.       FOR b to CipherLength-1
  23.          IF cipher text position a = cipher text position b
  24.             error flag = true
  25.             print "duplicate error message"
  26.             a=b=cipher length
  27.    
  28.    ---3RD LINE OF INPUT---
  29.          INPUT = plain text length
  30.          IF plain text length > 4 or  <255 THEN
  31.             FOR a(0) to Plain text length
  32.  
  33.    ---4TH LINE OF INPUT---
  34.             Input position a = plain text position a
  35.             IF plain text position a is not a letter or a space then
  36.                print error message
  37.                error flag = true
  38.             IF error flag = false then
  39.                copy plain text into altered text array
  40.                cipher positon cipher length = cipher position 0
  41.                FOR a(0) to cipher length - 1
  42.                   FOR b(o) to cipher length
  43.                      IF plain text position b = cipher text position a then
  44.                         altered text position b =cipher text position (a + 1)
  45.                   c = a + 1
  46.                   print "step" c " "substitute" plain text position b "with" cipher text position (a+1)
  47.                   print altered text
  48.          else print error message
  49. else print error message
  50.  
  51. END         
  52. */
  53. #include <stdio.h>
  54. #include <ctype.h>
  55. #define CipherMin 2
  56. #define CipherMax 16
  57. #define PlainTextMin 4
  58. #define PlainTextMax 256
  59. int main (void){
  60.  
  61.   int CipherLength = 0;
  62.   char CipherText[CipherMax];
  63.   int PlainTextLength = 0;
  64.   char PlainText[PlainTextMax];
  65.   char AlteredText[PlainTextMax];
  66.   int a=0, b=0, ErrorFlag = 0, c = 0;
  67.  
  68.    scanf ("%d", &CipherLength);
  69.    if ((CipherLength > CipherMin) && (CipherLength < CipherMax)){
  70.  
  71.       scanf ("%s", &CipherText);
  72.       for(a=0;a<=(CipherLength-2);a++){
  73.          
  74.          b=a+1;
  75.          for(b;b<=(CipherLength-1);b++){
  76.          
  77.                    if(CipherText[b]==CipherText[a]){
  78.                    
  79.                             ErrorFlag = 1;
  80.                             printf("Duplicate error letter '%c' repeated\n", CipherText[b]);
  81.                             a=b=CipherLength;       
  82.                    }
  83.            }   
  84.       }
  85.       scanf ("%d", &PlainTextLength);
  86.       if ((PlainTextLength > PlainTextMin) && (PlainTextLength < PlainTextMax)){
  87.  
  88.          for (a = 0; a <= PlainTextLength; a++){
  89.  
  90.             scanf ("%c", &PlainText[a]);
  91.             if (((isalpha (PlainText[a])) && (islower (PlainText[a]))) || (isspace (PlainText[a]))){
  92.             }
  93.          
  94.              else{
  95.          
  96.                printf ("\nEnter only letters or spaces");
  97.            a = PlainTextLength;
  98.            ErrorFlag = 1;
  99.             }
  100.        }
  101.  
  102.        if (ErrorFlag == 0){
  103.      
  104.             strcpy (AlteredText, PlainText);
  105.             CipherText[CipherLength] = CipherText[0];
  106.             for (a = 0; a < CipherLength; a++){
  107.  
  108.            for (b = 0; b <= PlainTextLength; b++){
  109.  
  110.                   if (PlainText[b] == CipherText[a]){
  111.  
  112.                AlteredText[b] = CipherText[a + 1];
  113.                   }   
  114.               }
  115.            c = a + 1;
  116.            printf("\n Step %d substitute %c with %c", c, CipherText[a], CipherText[a + 1]);
  117.            printf("\n %s\n", AlteredText);
  118.  
  119.             } 
  120.          } 
  121.       }
  122.       else{
  123.  
  124.        printf("\nThe plain text must be betweeen %d and %d characters long",PlainTextMin, PlainTextMax);
  125.       }
  126.    }
  127.    else{
  128.  
  129.       printf ("\nEnter a cipher length between %d and %d", CipherMin, CipherMax);
  130.    }
  131.    return (0);
  132. }