28-08-2013, 15:25
Hola gente como va?
Bueno estoy aca luchando con un programa de listas en el que no puedo resolver una parte del enunciado. Lo que no puedo resolver es la parte b) de tal. El enunciado es el siguiente:
Se desea implementar una aplicacion que permita almacenar las mediciones de valores de
resistencias para compararlos con los valores nominales (1, 10, 100, 1000, etc Ohm) que se esperaba
de cada una de ellas. El programa debera ser capaz de almacenar un numero desconocido de mediciones con
los siguientes datos de las resistencias:
* Codigo del Componente (un digito alfanumerico de 5 caracteres).
* Valor nominal de la resistencia.
* Valor medido.
Se pide:
a) Cargar todos los datos medidos en una LSE tipo COLA hasta que el valor del codigo de componente sea
"fin".
b) Una vez finalizada la carga se debera listar en pantalla todas las resistencias cuyo valor medido
difiera de su valor nominal por mas de un porcentaje que ingresaremos al comienzo del programa por
linea de comando (arg del main).
c) Se dara al ususario un menu con las siguiente opciones:
1. Modificar medicion: Para ello se ingresa codigo de la resistencia y nueva medicion.
2. Eliminar Medicion: Para ello se ingresa codigo de la resistencia y se elimina medicion.
3. Salir: Momento en el cual se libera memoria pedida para la COLA.
No se bien como pensar la parte de recorrer toda la lista y ir verificando cada valor. Por otro lado, supongo que para la parte matematica del punto, simplemente tengo que multiplicar el valor medido por 100 y al resultado dividirlo por el valor nominal de la resistencia. Si el valor que me da es distinto del valor que ingrese por linea de comando (que vendria a ser la tolerancia o porcentaje de la resistencia) entonces listo en pantalla dicha resistencia con su codigo y demas. Esto lo tengo que hacer para todas las resistencias. Nuevamente mi problema es hacer el codigo para poder recorrer todos los nodos y ir "tomando" los valores de las resistencias de cada nodo. Aqui les dejo lo que hice del programa:
http://www.copiatelo.com/index.php?show=m2aaf5adb
Como ven, a la funcion la llame "verificar (H , float tole)" la cual recibe NODO **H que es el primer nodo de todos (el header) y lo tomo como un puntero a puntero pues h ya es un puntero y yo le toy dando la direccion de lo que ya es un puntero y un "float tole" que seria el porcentaje que yo ingrese por telcado por linea de comando al comienzo. A la funcion cuando la invoque en el main, le pase la direccion de H y lo que yo ingrese por linea de comando (utilice el atof pues lo que yo ingreso por teclado la PC lo toma como chars y yo quiero que lo tome como floats). La idea es recorrer la lista con un puntero auxiliar y que a traves de este yo pueda ingresar a los datos "v_medido" y "v_nominal" de cada nodo (resistencia) y poder compararlos como propuse anteriormente con el valor de "tole". Pero no se cual seria el codigo.
Quien me da una mano?
Eso es todo muchas gracias!
Ahi lo pense y hice esto:
http://www.copiatelo.com/index.php?show=m6bac6951
No se si esta bien o no. Esta vez no le pase la direccion a la funcion cuando la invoque en el main sino que le pase directamente la variable h y por ende en la funcion la use como puntero. Esta bien hecho?
Bueno estoy aca luchando con un programa de listas en el que no puedo resolver una parte del enunciado. Lo que no puedo resolver es la parte b) de tal. El enunciado es el siguiente:
Se desea implementar una aplicacion que permita almacenar las mediciones de valores de
resistencias para compararlos con los valores nominales (1, 10, 100, 1000, etc Ohm) que se esperaba
de cada una de ellas. El programa debera ser capaz de almacenar un numero desconocido de mediciones con
los siguientes datos de las resistencias:
* Codigo del Componente (un digito alfanumerico de 5 caracteres).
* Valor nominal de la resistencia.
* Valor medido.
Se pide:
a) Cargar todos los datos medidos en una LSE tipo COLA hasta que el valor del codigo de componente sea
"fin".
b) Una vez finalizada la carga se debera listar en pantalla todas las resistencias cuyo valor medido
difiera de su valor nominal por mas de un porcentaje que ingresaremos al comienzo del programa por
linea de comando (arg del main).
c) Se dara al ususario un menu con las siguiente opciones:
1. Modificar medicion: Para ello se ingresa codigo de la resistencia y nueva medicion.
2. Eliminar Medicion: Para ello se ingresa codigo de la resistencia y se elimina medicion.
3. Salir: Momento en el cual se libera memoria pedida para la COLA.
No se bien como pensar la parte de recorrer toda la lista y ir verificando cada valor. Por otro lado, supongo que para la parte matematica del punto, simplemente tengo que multiplicar el valor medido por 100 y al resultado dividirlo por el valor nominal de la resistencia. Si el valor que me da es distinto del valor que ingrese por linea de comando (que vendria a ser la tolerancia o porcentaje de la resistencia) entonces listo en pantalla dicha resistencia con su codigo y demas. Esto lo tengo que hacer para todas las resistencias. Nuevamente mi problema es hacer el codigo para poder recorrer todos los nodos y ir "tomando" los valores de las resistencias de cada nodo. Aqui les dejo lo que hice del programa:
http://www.copiatelo.com/index.php?show=m2aaf5adb
Como ven, a la funcion la llame "verificar (H , float tole)" la cual recibe NODO **H que es el primer nodo de todos (el header) y lo tomo como un puntero a puntero pues h ya es un puntero y yo le toy dando la direccion de lo que ya es un puntero y un "float tole" que seria el porcentaje que yo ingrese por telcado por linea de comando al comienzo. A la funcion cuando la invoque en el main, le pase la direccion de H y lo que yo ingrese por linea de comando (utilice el atof pues lo que yo ingreso por teclado la PC lo toma como chars y yo quiero que lo tome como floats). La idea es recorrer la lista con un puntero auxiliar y que a traves de este yo pueda ingresar a los datos "v_medido" y "v_nominal" de cada nodo (resistencia) y poder compararlos como propuse anteriormente con el valor de "tole". Pero no se cual seria el codigo.
Quien me da una mano?
Eso es todo muchas gracias!
Ahi lo pense y hice esto:
http://www.copiatelo.com/index.php?show=m6bac6951
No se si esta bien o no. Esta vez no le pase la direccion a la funcion cuando la invoque en el main sino que le pase directamente la variable h y por ende en la funcion la use como puntero. Esta bien hecho?