elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)  (Leído 2,082 veces)
Undíamartes

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)
« 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.


En línea

oldaccount

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)
« Respuesta #1 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.


« Última modificación: 12 Octubre 2016, 15:34 pm por CRivasGomez » En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Ayuda, cómo utilizar una magnitud ingrsada con unidades? (en lenguaje c)
« Respuesta #2 en: 12 Octubre 2016, 15:11 pm »

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


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines