#include <stdio.h>
#include <stdint.h>
char *status[8]={"Power On","Error","Tx Ready","Rx Ready","Overheat","Undervoltage","Timeout","Reserved"};
void decode_status(uint8_t status_reg)
{
// Your logic here
for(uint8_t i = 0;i <= 7;i++)
{
if(status_reg & (1<<i))
{
printf("%s\n",status[i]);
}
}
}
int main()
{
uint8_t reg;
scanf("%hhu", ®);
decode_status(reg);
return 0;
}
// #include <stdio.h>
// #include <stdint.h>
// #define STATUS_BITS 8
// #define BIT(n) (1U << (n))
// static const char * const status[STATUS_BITS] = {
// "Power On",
// "Error",
// "Tx Ready",
// "Rx Ready",
// "Overheat",
// "Undervoltage",
// "Timeout",
// "Reserved"
// };
// void decode_status(uint8_t status_reg)
// {
// for (uint8_t i = 0; i < STATUS_BITS; i++)
// {
// if (status_reg & BIT(i))
// {
// printf("%s\n", status[i]);
// }
// }
// }
Solving Approach
Input
13
Expected Output
Power On Tx Ready Rx Ready