Skip to main content
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
edited tags
Link
DinoCoderSaurus
  • 28.6k
  • 2
  • 12
  • 31
Source Link

hi, i tried to solve problem set 2 substitution. it gives right output but check50 is giving errors

#include<stdio.h> #include<cs50.h> #include<string.h> #include<ctype.h> #include <stdlib.h>

int main(int argc, string argv[]) { if (argc != 2) { printf("Usage: ./caesar key\n"); return 1; }

int k = strlen(argv[1]);

for (int i = 0; i < k; i++)
{

    if (!isalpha(argv[1][i]))
    {

       printf("Key must only contain alphabetic characters.\n");
       return 1;
    }
}

if (k!= 26)
{
    printf("Key must contain 26 characters.\n");
    return 1;
}

for (int j = 0; j < k; j++)
{
     for(int l = 0; l < k; l++)
     {
         if (argv[1][j] == argv[1][l] && l != j )
         {

             printf("Key must not contain repeated characters.\n");
             return 1;
         }
     }
}
string alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int index=-1;
char result[25];

string p = get_string("Plain Text: "); printf("ciphertext: ");

for (int m = 0; m < strlen(p); m++)
{
    char temp = p[m];
    if (islower(temp))
    {
        temp = toupper(temp);
    }

    for (int alpha = 0; alpha < strlen(alphabets); alpha++)
    {
        if (temp == alphabets[alpha])
        {
            index = alpha;
        }
    }

    if (islower(p[m]))
    {
        result[m] = tolower(argv[1][index]);
    }
    else if (isupper(p[m]))
    {
        result[m] = toupper(argv[1][index]);
    }
    else {
        result[m] = p[m];
    }
}
printf("%s\n", result);
return 0;

}

// error is: encrypts "a" as "z" using ZYXWVUTSRQPONMLKJIHGFEDCBA as key output not valid ASCII text