1 votos

Conversión de unidades de medida

Me preguntaba si podría recibir ayuda para intentar crear una fórmula matemática sencilla. Hace poco me hicieron una entrevista para trabajar como programador de nivel 1 y me pidieron que hiciera un programa. Lo hice todo perfectamente, pero lo que me hizo fracasar en la entrevista fue que necesito crear una fórmula matemática para convertir diferentes unidades de medida a otras unidades de medida. Esto es fácil, pero lo que lo hizo difícil fue que necesitaba convertir estas diferentes unidades de medida basadas en las longitudes que me dieron en pies. Esto me molesta mucho porque el chico dijo que podría haber hecho una ecuación que podría haber sido utilizada para todas las conversiones a las diferentes unidades de medida. Así, las unidades de medida actuales que se dieron contenían sus unidades de medida originales y su medida en términos de pies. La fórmula tiene que utilizar las diferentes longitudes en términos de pies para hacer estas conversiones. De lo contrario, habría conseguido el trabajo simplemente dividiendo y multiplicando todo para obtener mi respuesta. Las diferentes unidades de medida son las siguientes:

pulgadas,.083333
fathom,6
pie,1
de un tramo, 660
kilómetro, 3281,5
metro, 3.2815
milla, 5280
varilla, 16,5
patio, 3

Los números después de la coma son las longitudes en términos de pies para esa unidad de medida. He estado mirando esto durante horas, pero no puedo averiguar una ecuación para utilizar todas las longitudes. A los que me ayuden, se lo agradezco de verdad, me estoy empezando a sentir derrotado con esto. Gracias de nuevo.

1voto

zoli Puntos 7595

"entrada" es la cantidad que se da. "infeet" es una variable auxiliar. La "salida" es la cantidad solicitada.

$$ \text{infeet}= \begin{cases} \frac{\text{input}}{1}&, \text{ if the input is given in feet}\\ \frac{\text{input}}{0.083333}&, \text{ if the input is given in inches}\\ \frac{\text{input}}{6}&, \text{ if the input is given in fathoms}\\ \frac{\text{input}}{660}&, \text{ if the input is given in furlongs}\\ \frac{\text{input}}{3281.5}&, \text{ if the input is given in kilometers}\\ \frac{\text{input}}{3.2815}&, \text{ if the input is given in meters}\\ \frac{\text{input}}{5280}&, \text{ if the input is given in miles}\\ \frac{\text{input}}{16,5}&, \text{ if the input is given in yards}\\ \frac{\text{input}}{3}&, \text{ if the input is given in yards}\\ \end{cases} $$

$$ \text{output}= \begin{cases} \text{infeet} \times {1}&, \text{ if the output is requested in feet}\\ \text{infeet}\times {0.083333}&, \text{ if the output is requested in inches}\\ \text{infeet}\times {6}&, \text{ if the output is requested in fathoms}\\ \text{infeet}\times{660}&, \text{ if the output is requested in furlongs}\\ \text{infeet}\times{3281.5}&, \text{ if the output is requested in kilometers}\\ \text{infeet}\times{3.2815}&, \text{ if the output is requested in meters}\\ \text{infeet}\times{5280}&, \text{ if the output is requested in miles}\\ \text{infeet}\times{16,5}&, \text{ if the input is requested in yards}\\ \text{infeet}\times{3}&, \text{ if the output is requested in yards}\\ \end{cases} $$

0voto

Anthony Cramp Puntos 126

Así, por ejemplo, tomemos la línea

metro, 3.2815

Así, podríamos programar el factor de conversión

feetpermeter = 3.2815

Entonces, si nos dan valueinmeters convertimos a valueinfeet utilizando

valueinfeet = valueinmeters * feetpermeter

o al revés

valueinmeters = valueinfeet / feetpermeter

Y cuando no se trate de los pies, utiliza dos conversiones:

valueinrods = valueininches * feetperinch / feetperrod

0voto

Brian Tung Puntos 9884

¿No ha generalizado su código adecuadamente? ¿Quizás por eso no se le pidió que volviera?

Por ejemplo, cada uno de los elementos de configuración son pares nombre-longitud. Yo esperaría ver algo parecido a

// given: input value in inVal, input unit in inUnit, output unit in outUnit
// config: the associative list units contains name-length pairs
// produce: output value in outVal
// end result: inVal inUnits is equal to outVal outUnits
outVal = inVal*units[inUnit].length/units[outUnit].length;

Entonces, si tuviéramos inVal = 5 , inUnit = "mile" , outUnit = "fathom" alors outval tomaría el valor $5 \times 5280 \div 6 = 4400$ .

Esto sería más legible y más fácil de mantener que el código que utiliza los valores en una serie de declaraciones if-then. Creo que el sistema Unix units hace las cosas esencialmente de esta manera (algo más complicado ya que permite unidades compuestas como metros por segundo y millas por quincena):

You have: 299792458 m/s
You want: furlongs/fortnight
    * 1.8026175e+12
    / 5.5474886e-13

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X