Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Undíamartes en 12 Octubre 2016, 06:19 am



Título: Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)
Publicado por: Undíamartes en 12 Octubre 2016, 06:19 am
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.


Título: Re: Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)
Publicado por: oldaccount en 12 Octubre 2016, 14:47 pm
Hola Undíamartes.

Esta es mi solución al problema:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 16
  5.  
  6. int main() {
  7. char input[MAX];
  8. char *p = input;
  9. int length = 0;
  10. char readed = 0;
  11. double carry = 1;
  12. double result = 0;
  13.  
  14. scanf("%s", p);
  15. length = strlen(p);
  16. p += length-1;
  17.  
  18. while(length > 0) {
  19. readed = *p;
  20. p--;
  21. length--;
  22.  
  23. if((readed-'0') >= 0 && (readed-'0') <= 9) {
  24. result += (readed-'0') * carry;
  25. carry *= 10;
  26. } else {
  27. switch(readed) {
  28. case 'M':
  29. carry = 1000000;
  30. break;
  31. case 'k':
  32. carry = 1000;
  33. break;
  34. case 'h':
  35. carry = 100;
  36. break;
  37. case 'a':
  38. carry = 10;
  39. p--;
  40. length--;
  41. break;
  42. case 'd':
  43. carry = 0.1;
  44. break;
  45. case 'c':
  46. carry = 0.01;
  47. break;
  48. case 'm':
  49. carry = 0.001;
  50. break;
  51. case 'u':
  52. carry = 0.000001;
  53. break;
  54. }
  55. }
  56. }
  57.  
  58. printf("%f\n", result);
  59. printf("%g\n", result);
  60. }

Esta es la salida del programa:

Código:
223u
0.000223
0.000223

Código:
27da298c
272.980000
272.98

Código:
252k35u
252000.000035
252000

Código:
23M263k
23263000.000000
2.3263e+07

Código:
265da34
2684.000000
2684

Saludos.


Título: Re: Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)
Publicado por: dato000 en 12 Octubre 2016, 15:11 pm
Buen código, pero habria que indicarsele al usuario por pantalla las opciones y su significado.