I solved the Caesar problem and it works flawlessly. But I can not check it properly. The results are correct but ''' check50 cs50/problems/2021/x/caesar ''' says it is incorrect. If I view the results everything looks correct but just doesn't get accepted by check50. I am sorry if this is a frequently asked question but I worked so many hours for these few lines of code...
My Code below:
#include <string.h>
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
#include <ctype.h>
//initialize vars
int i;
int n;
int pw;
string key;
int indexnumber;
// Initialize alphabet to calculate indexes
char alphalower[] = {'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'};
char alphaupper[] = {'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'};
int main(int argc, string argv[])
{
//checks input
if (argc != 2)
{
printf("Usage: ./ceasar key\n");
return 1;
}
key = argv[1];
//checks for non digits
for (i = 0, n = strlen(key); i <= n; i++)
{
if (isalpha(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
}
string pltext = get_string("plaintext: ");
n = strlen(pltext);
char *cipher;
cipher = (char *)malloc(n * sizeof(char)); //creating the array dynamically
//Converts string to int
for (i = 0, n = strlen(key); i <= n; i++)
{
pw = atoi(key);
}
printf("ciphertext: ");
for (i = 0, n = strlen(pltext); i <= n; i++)
{
//goes through every letter and encrypts
if (isupper(pltext[i]))
{
indexnumber = (((pltext[i] % 'A') + pw) % 26);
cipher[i] = alphaupper[indexnumber];
printf("%c", cipher[i]);
}
else if (islower(pltext[i]))
{
indexnumber = (((pltext[i] % 'a') + pw) % 26); // B
cipher[i] = alphalower[indexnumber];
printf("%c", cipher[i]);
}
else if (isalpha(pltext[i]) == 0)
{
printf("%c", pltext[i]);
}
}
printf("\n");
return 0;
}
And here the check50 output:
~/pset2/ceasar/ $ check50 cs50/problems/2021/x/caesar
Connecting......
Authenticating.....
Verifying.......
Preparing................
Uploading...............
Waiting for results........................................
Results for cs50/problems/2021/x/caesar generated by check50 v3.1.2
:) caesar.c exists.
:) caesar.c compiles.
:( encrypts "a" as "b" using 1 as key
expected "ciphertext: b\...", not "ciphertext: b\..."
:( encrypts "barfoo" as "yxocll" using 23 as key
expected "ciphertext: yx...", not "ciphertext: yx..."
:( encrypts "BARFOO" as "EDUIRR" using 3 as key
expected "ciphertext: ED...", not "ciphertext: ED..."
:( encrypts "BaRFoo" as "FeVJss" using 4 as key
expected "ciphertext: Fe...", not "ciphertext: Fe..."
:( encrypts "barfoo" as "onesbb" using 65 as key
expected "ciphertext: on...", not "ciphertext: on..."
:( encrypts "world, say hello!" as "iadxp, emk tqxxa!" using 12 as key
expected "ciphertext: ia...", not "ciphertext: ia..."
:) handles lack of argv[1]
To see the results by yourself go here
https://submit.cs50.io/check50/98cd213123f8b4eb8f76bc6837ad2e3d260fdb02
I just don't know what to do. Thanks in advance ;)