#include #include int stringlen(const char* str); void printError(); int is_space(const char ch); int is_end_of_input(const char ch); void encodeLoop(); void decodeLoop(); void encode_and_print(char ch); int decode(char ch_1, char ch_2, char* decoded); int hex_char_to_int(char ch); char int_to_hex_char(int value); int main(int argc, char** argv) { char ch; ch = getchar(); if(ch == EOF) printf("loh"); // char ch; // if(scanf("%2X", &ch)) // { // printf("loh"); // } // printf("%c", ch); // return 0; //printf("argc = %d\n", argc); // if (argc != 2) { // printf("loh1"); // printError(); // return 0; // } // if (stringlen(argv[1]) != 1) { // printf("loh2"); // printError(); // return 0; // } //char mode = argv[1][0]; char mode = '1'; if (mode == '0') { encodeLoop(); } else if (mode == '1') { decodeLoop(); } else { printError(); } return 0; } int stringlen(const char* str) { int length = 0; for (int i = 0; str[i] != '\0'; ++i) { ++length; } return length; } int is_space(const char ch) { return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\v' || ch == '\f'; } int is_end_of_input(const char ch) { return ch == '\n' || ch == EOF; } void printError() { printf("n/a"); } void encodeLoop() { int to_read_char = 1; char ch; while (scanf("%c", &ch) && ch != '\n') { if (!to_read_char ^ is_space(ch)) { printError(); } if (to_read_char) { encode_and_print(ch); } else { printf(" "); } to_read_char ^= 1; } } // void decodeLoop() { // char decoded; // char ch_1; // char ch_2; // char ch_3; // int to_loop = 1; // int to_read_char = 1; // while (to_loop) { // if (scanf("%c%c%c", &ch_1, &ch_2, &ch_3) != 3) { // printError(); // return; // } // if(!is_space(ch_3) && ch_3 != '\n') { // printError(); // return; // } // if (!decode(ch_1, ch_2, &decoded)) { // printError(); // return; // } // printf("%c ", decoded); // if(ch_3 == '\n') { // return; // } // } // } char skip_spaces() { char ch; do { ch = getchar(); } while (!is_end_of_input(ch) && is_space(ch)); return ch; } void decodeLoop() { char ch = skip_spaces(); int to_read_char = 1; while(!is_end_of_input(ch)) { if(to_read_char) { } } } void encode_and_print(const char ch) { printf("%c%c", int_to_hex_char(ch / 16), int_to_hex_char(ch % 16)); } int decode(const char ch_1, const char ch_2, char* decoded) { int row = hex_char_to_int(ch_1); int col = hex_char_to_int(ch_2); *decoded = row * 16 + col; if (row < 0 || col < 0) { return 0; } return 1; } int is_valid_hex_char(const char ch) { return (ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F'); } int hex_char_to_int(const char ch) { if (ch >= '0' && ch <= '9') return ch - '0'; if (ch >= 'A' && ch <= 'F') return ch - 'A' + 10; return -1; } char int_to_hex_char(const int value) { if(value >= 0 && value <= 9) return '0' + value; if(value >= 10 && value <= 15) return 'A' + value - 10; return '-'; }