Моя программа должна принимать символ и кодировать его с помощью ROT13, если это буква, а в противном случае оставлять его таким же, а затем печатать результат.
Мой код ниже работает для всех строчных букв и прописных букв AM, но не работает с прописными буквами NZ и другими символами/цифрами. Любая помощь приветствуется :)
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#define TRUE 1
#define FALSE 0
#define UPPER_START 65
#define UPPER_END 90
#define LOWER_START 97
#define LOWER_END 122
#define UPPER_MID 77
#define LOWER_MID 109
void testEncode (void); int isValid (char cipherChar); char encode (char letter);
int main (int argc, char* argv[]) {
char cipherChar;
scanf("%c", &cipherChar);
if (isValid(cipherChar) == TRUE) {
printf("%c", encode (cipherChar));
} else if (isValid(cipherChar) == FALSE) {
printf("%c", cipherChar);
}
return EXIT_SUCCESS;
}
int isValid (char cipherChar) {
int valid;
if ((cipherChar >= UPPER_START) &&
(cipherChar <= UPPER_END)) {
valid = TRUE;
} else if ((cipherChar >= LOWER_START) &&
(cipherChar <= LOWER_END)) {
valid = TRUE;
} else {
valid = FALSE;
}
return valid;
}
char encode (char letter) {
if ((letter <= UPPER_MID) || (letter <= LOWER_MID)) {
letter = letter + 13;
} else {
letter = (letter - 13);
}
return letter;
}
%
). Намного проще. - person tangrs   schedule 12.04.2013#include <stdbool.h>
и вместо использованияint
вы можете использоватьbool
, а вместоTRUE
иFALSE
вы можете использовать стандартныеtrue
иfalse
. - person dreamlax   schedule 12.04.2013