Para explicarlo mejor, tengo este código en C:
Código C:
Ver original
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> float calcagua(float lact, float lprox); float lactual, lproxima, aguatotal; int opcion; int main() { textcolor(7); clrscr(); textcolor(2); textcolor(7); switch(opcion) { case 1: printf("\n\t-Escribe la lectura actual que tuviste según tu recibo anterior (El numero abajo de donde dice \"LECT.ACTUAL\":\n"); printf("\t-Ahora escribe el numero de la lectura que muestra tu medidor (omite los ceros a la izquierda):\n"); aguatotal = lproxima - lactual; break; } return 0; } float calcagua(float lact, float lprox) { float aguatotal; float costo, iva, alcantarillado, saneamiento, tarifa, tarifa0, tarifa1, tarifa2, tarifa3, tarifa4, tarifa5, tarifa6, tarifa01, tarifa02, tarifa03, tarifa04, tarifa05; aguatotal = lprox - lact; tarifa01 = 10.18; tarifa02 = 22.24; tarifa03 = 29.37; tarifa04 = 39.74; tarifa05 = 44.71; tarifa0 = 39.98; tarifa1 = tarifa01*(aguatotal-8); tarifa2 = tarifa02*(aguatotal-12); tarifa3 = tarifa03*(aguatotal-25); tarifa4 = tarifa04*(aguatotal-50); tarifa5 = tarifa05*(aguatotal-250); if (aguatotal <=8) { tarifa = tarifa0; alcantarillado = tarifa/100*25; saneamiento = tarifa/100*10; iva = (alcantarillado + saneamiento)/100*16; costo = tarifa + alcantarillado + saneamiento + iva; } if (aguatotal > 8 <= 12) { tarifa = tarifa1; alcantarillado = tarifa/100*25; saneamiento = tarifa/100*10; iva = (alcantarillado + saneamiento)/100*16; costo = tarifa + alcantarillado + saneamiento + iva; } if (aguatotal > 12 <=25) { tarifa = tarifa2; alcantarillado = tarifa/100*25; saneamiento = tarifa/100*10; iva = (alcantarillado + saneamiento)/100*16; costo = tarifa + alcantarillado + saneamiento + iva; } if (aguatotal > 25 <=50) { tarifa = tarifa3; alcantarillado = tarifa/100*25; saneamiento = tarifa/100*10; iva = (alcantarillado + saneamiento)/100*16; costo = tarifa + alcantarillado + saneamiento + iva; } if (aguatotal > 50 <= 250) { tarifa = tarifa4; alcantarillado = tarifa/100*25; saneamiento = tarifa/100*10; iva = (alcantarillado + saneamiento)/100*16; costo = tarifa + alcantarillado + saneamiento + iva; } if (aguatotal > 250) { tarifa = tarifa5; alcantarillado = tarifa/100*25; saneamiento = tarifa/100*10; iva = (alcantarillado + saneamiento)/100*16; costo = tarifa + alcantarillado + saneamiento + iva; } return costo; }
El cual, debería de compilar un programa que al insertarle un numero determinado y otro también determinado, calcule el precio a pagar. El problema es que no se que esté haciendo mal, aunque sospecho que mi error está en algo sobre los condicionales, no estoy seguro.
Se supone que, por ejemplo, al insertarle como primer valor (lactual) el numero 1594 y como segundo valor (lproxima) 1603, debería de dar como valor resultante (resultado de calcagua(lactual, lproxima), o la variable local "costo") 70.50 o alguna cifra no muy lejana (por eso de redondeos, etc). El problema, es que al colocarle esos valores, me da como resultado el numero -2793.722168, el cual está demasiado alejado de lo que debería salir.
No se realmente en donde está el error, he tratado de asignarle el valor del resultado de esa función a una variable y luego ya mostrar esa variable en pantalla pero sale el mismo numero. He incluso agregado la biblioteca "math.h" por si es que ayudaba en algo, pero nada.
No soy muy experto en esto del C, y debido a que soy auto-didácta aprendiendo de internet, algunas cosas como esta me fallan todavía, aunque espero mejorar cada vez (los programas que hago tienen cada vez más calidad y complejidad).
Saludos y muchas gracias de antemano a todos los miembros de este gran foro!!