Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)

Iniciado por Undíamartes, 12 Octubre 2016, 06:19 AM

0 Miembros y 1 Visitante están viendo este tema.

Undíamartes

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.

oldaccount

#1
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.

dato000

Buen código, pero habria que indicarsele al usuario por pantalla las opciones y su significado.