Saludos, mi problema es que no se cómo traducir las unidades que ingresa el usuario. Por ejemplo, en el contexto de unidades de ohm, si el usuario ingresa 1M2 tengo que hacer que el programa lo interprete como 1000002 ohm, si ingresa 2k serían 2000 ohm, etc.
Hola Undíamartes.
Esta es mi solución al problema:
#include <stdio.h>
#include <string.h>
#define MAX 16
int main() {
char input[MAX];
char *p = input;
int length = 0;
char readed = 0;
double carry = 1;
double result = 0;
scanf("%s", p);
length = strlen(p);
p += length-1;
while(length > 0) {
readed = *p;
p--;
length--;
if((readed-'0') >= 0 && (readed-'0') <= 9) {
result += (readed-'0') * carry;
carry *= 10;
} else {
switch(readed) {
case 'M':
carry = 1000000;
break;
case 'k':
carry = 1000;
break;
case 'h':
carry = 100;
break;
case 'a':
carry = 10;
p--;
length--;
break;
case 'd':
carry = 0.1;
break;
case 'c':
carry = 0.01;
break;
case 'm':
carry = 0.001;
break;
case 'u':
carry = 0.000001;
break;
}
}
}
printf("%f\n", result);
printf("%g\n", result);
}
Esta es la salida del programa:
223u
0.000223
0.000223
27da298c
272.980000
272.98
252k35u
252000.000035
252000
23M263k
23263000.000000
2.3263e+07
265da34
2684.000000
2684
Saludos.
Buen código, pero habria que indicarsele al usuario por pantalla las opciones y su significado.