pset 2
readability
Implement a program using the Coleman-Liau index to compute the approximate grade level needed to comprehend some text, per the below.
$ ./readabilityText: Congratulations! Today is your day. You're off to Great Places! You're off and away!Grade 3#include <stdio.h>#include <cs50.h>#include <math.h>
int count_letters(string s);int count_words(string s);int count_sentences(string s);
int main(void){ string text = get_string("Text: "); int letters = count_letters(text); int words = count_words(text); int sentences = count_sentences(text); double L = ((double) letters / words) * 100; double S = ((double) sentences / words) * 100; double i = 0.0588 * L - 0.296 * S - 15.8; int index = round(i);
if (index < 1) { printf("Before Grade 1\n"); } else if (index >= 16) { printf("Grade 16+\n"); } else { printf("Grade %i\n", index); }}
int count_letters(string s){ int count = 0; for (int i = 0; s[i] != '\0'; i++) { if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')) { count++; } }
return count;}
int count_words(string s){ int count = 0; for (int i = 0; s[i] != '\0'; i++) { if (s[i] == ' ') { count++; } }
return count + 1;}
int count_sentences(string s){ int count = 0; for (int i = 0; s[i] != '\0'; i++) { if (s[i] == '.' || s[i] == '!' || s[i] == '?') { count++; } }
return count;}substitution
Implement a program that implements a substitution cipher, per the below.
$ ./substitution JTREKYAVOGDXPSNCUIZLFBMWHQplaintext: HELLOciphertext: VKXXN#include <stdio.h>#include <cs50.h>#include <string.h>#include <ctype.h>
int main(int argc, string argv[]){ if (argc == 2) { int slen = strlen(argv[1]); if (slen != 26) { printf("Key must contain 26 characters\n"); return 1; } else { for (int i = 0; i < slen; i++) { if ((argv[1][i] > 0 && argv[1][i] < 'A') || (argv[1][i] > 'Z' && argv[1][i] < 'a') || (argv[1][i] > 'z')) { printf("Key must contain alphabets only\n"); return 1; } }
for (int i = 0; i < slen; i++) { for (int j = 0; j < slen; j++) { if (i == j) { continue; } else if (toupper(argv[1][i]) == toupper(argv[1][j])) { printf("Key must contain 26 unique letters\n"); return 1; } } } }
string plaintext = get_string("plaintext: "); printf("ciphertext: "); for (int i = 0; plaintext[i] != '\0'; i++) { if (isupper(plaintext[i])) { if (isupper(argv[1][plaintext[i] - 'A'])) { printf("%c", argv[1][plaintext[i] - 'A']); } else { printf("%c", toupper(argv[1][plaintext[i] - 'A'])); } } else if (islower(plaintext[i])) { if (islower(argv[1][plaintext[i] - 'a'])) { printf("%c", argv[1][plaintext[i] - 'a']); } else { printf("%c", tolower(argv[1][plaintext[i] - 'a'])); } } else { printf("%c", plaintext[i]); } } printf("\n");
return 0; } else { printf("Usage: ./substitution key\n"); return 1; }}