From e731c9c4ea8a221f6008c76bf501d91fa3d675e1 Mon Sep 17 00:00:00 2001 From: Strozzi <laps15@inf.ufpr.br> Date: Mon, 23 May 2016 17:41:53 -0300 Subject: [PATCH] Change the hex2int function --- cMIPS/include/main.c | 67 ++++++-------------------------------------- 1 file changed, 8 insertions(+), 59 deletions(-) diff --git a/cMIPS/include/main.c b/cMIPS/include/main.c index f46dc89..99ada01 100644 --- a/cMIPS/include/main.c +++ b/cMIPS/include/main.c @@ -23,63 +23,12 @@ int hex2int(char *hex) { int s= Strlen(hex), i, ans= 0; for (i= 0; i< s; i++) { - switch(hex[i]) { - case 'F': - case 'f': - ans+= 15*pow16(s-(i+1)); - break; - case 'E': - case 'e': - ans+= 14*pow16(s-(i+1)); - break; - case 'D': - case 'd': - ans+= 13*pow16(s-(i+1)); - break; - case 'C': - case 'c': - ans+= 12*pow16(s-(i+1)); - break; - case 'B': - case 'b': - ans+= 11*pow16(s-(i+1)); - break; - case 'A': - case 'a': - ans+= 10*pow16(s-(i+1));; - break; - case '9': - ans+= 9*pow16(s-(i+1));; - break; - case '8': - ans+= 8*pow16(s-(i+1));; - break; - case '7': - ans+= 7*pow16(s-(i+1));; - break; - case '6': - ans+= 6*pow16(s-(i+1));; - break; - case '5': - ans+= 5*pow16(s-(i+1));; - break; - case '4': - ans+= 4*pow16(s-(i+1));; - break; - case '3': - ans+= 3*pow16(s-(i+1));; - break; - case '2': - ans+= 2*pow16(s-(i+1));; - break; - case '1': - ans+= 1*pow16(s-(i+1));; - break; - default: - if (hex[i] != '0') - printf("ERROR!\n"); - break; - } + hex[i]-= 48; + if (hex[i] > 9) + hex[i] -= 7; + if (hex[i] > 15) + hex[i] -= 32; + ans += hex[i] * pow16(s-(i+1)); } return ans; } @@ -110,12 +59,12 @@ int main() { char n[16], f[16]; int fib; - while (scanf("%s", n) > 0) { + while (scanf("%s", n) && n[0]) { // trocar scanf por getc() fib= hex2int(n); if (fib < BUF_SZ) { fib = buf[fib]; int2hex(f, fib); - printf("%d(%s)\n", fib, f); + printf("%d(%s)\n", fib, f); // trocar printf por putc() } else printf("Valor fora dos limites!\n"); } -- GitLab