q2
🧩 Syntax:
#include <math.h>
#include <stdio.h>
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 '-';
}