Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <cs50.h>
- #include <ctype.h>
- #include <math.h>
- #include <string.h>
- #include <stdlib.h>
- int main(int argc, string argv[])
- {
- //handles argv[0] requirements, as per the specifications
- if(argc !=2)
- {
- printf("Error 1: missing, redundant or non-alphabetical command-line argument. Please retry.\n");
- return 1;
- }
- //otherwise go ahead
- string k = argv[1];
- int i;
- int j = 0;
- int sl;
- int p_i;
- int j_mod;
- int k_j;
- int c_i;
- int rc;
- //prompt user for plaintext
- printf("plaintext: ");
- string p = get_string();
- //ciphertext prompt
- printf("ciphertext: ");
- for(i=0, j=0, sl=strlen(p); i<sl; i++,j++)
- {
- if(isalpha(p[i]))
- {
- p_i = p[i]-65; //convert p[i] to alphabetical index
- j_mod = j % strlen(k);
- k_j = k[j] -65; //convert k[j] to alphabetical index
- c_i = (p_i+k_j)%26; //apply vigenere
- rc = c_i+65; //revert to new ascii index
- printf("%c\n", rc);
- printf("i ia %i, p[i] is %i,%c\n", i, p[i], p[i]);
- printf("j is %i, jmod strlen(k) is %i\n", j, j_mod);
- printf("applying vigenere: c_i = (%i+%i)mod26\n", p_i, k_j);
- printf("rc = %i+65-->%i\n", c_i, rc);
- }
- else
- {
- j--;
- printf("%c", p[i]);
- }
- }
- printf("\n");
- return 0;
- }//END OF MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement