Título: Ayuda con un programa en lenguaje C if , if else dentro de un if else Publicado por: osnov en 29 Septiembre 2012, 23:42 pm No entiendo por que el programa se salta unas indicaciones, en la parte donde hace la comparacion si es mayor a 365 siempre omite el ultimo else if (ROJO) aunque quede esta especificacion se la salta, creo q es un problema al ordenar los if pero no se como.
for(k=1;k<12;k++) { for(i=0;i<13;i++) { if(contador>m[k] && contador<=m2[k]) {contador=contador-m[k]; printf("\nEl disco de compresion %i del motor %i fallara el %i/%i/%i por horas",i+1,Md,contador,k+1,A);} else if(contador==m[k]) {printf("\nEl disco de compresion %i del motor %i fallara el %i/%i/%i por horas",i+1,Md,1,k+1,A);} else if(contador>365) { contador=contador-365; if(contador>=1 && contador<=31) {printf("\nEl disco de compresion %i del motor %i fallara el %i/%i/%i por horas",i+1,Md,contador,1,A+1);} [/color] else if (contador==m[k]) {printf("\nEl disco de compresion %i del motor %i fallara el %i/%i/%i por horas",i+1,Md,1,k+1,A+1);} else if(contador>m[k] && contador<=m2[k]) {contador=contador-m[k]; printf("\nEl disco de compresion %i del motor %i fallara el %i/%i/%i por horas",i+1,Md,contador,k+1,A+1);} } }} Título: Re: Ayuda con un programa en lenguaje C if , if else dentro de un if else Publicado por: leosansan en 30 Septiembre 2012, 00:32 am He hecho diversas pruebas y si va el "elseif". Tal vez si pones más de código:
Código
Citar Salida: Tal vez es que con tus valores no se alcance esa posibilidad.El disco de compresion 1 del motor 1 fallara el 10/10/0 por horas Título: Re: Ayuda con un programa en lenguaje C if , if else dentro de un if else Publicado por: osnov en 30 Septiembre 2012, 01:29 am Gracias, pero es que si alcanza los valores pero los evalua con el primer if del ciclo for, y hace lo que esta indicado ahi, es que las comparaciones son las mismas y solo hace los del primero
Título: Re: Ayuda con un programa en lenguaje C if , if else dentro de un if else Publicado por: overxfl0w13 en 30 Septiembre 2012, 01:42 am Me he fijado un poco y creo que se donde está el problema, la variable contador se inicializa con un valor 465 en el primer bucle cuando la variable que vale 12 empieza, se ejecuta otro bucle que empieza con valor 0, en la primera vuelta salta el primer else if y al tener valor mayor de 365 se ejecuta la primera asignación, contador = contador - 365 quedándose esta a 0, donde aquí es donde nosotros queremos comprobar el else if que da problemas y nos fijamos en una cosa.
En su primera vuelta: Código
m[k] = 0 m2[k] = 10 contador = 0 Por tanto contador no es mayor que m[k] pero si menor o igual que m2[k], aquí está el problema. No se puede iniciar el condicional sin cumplir los 2 requisitos, eso nos indica el operador and cortocircuitado. Por tanto la condición sería que se ejecutase al cumplirse una de las dos premisas. Código
(http://i47.tinypic.com/4qltus.png) No conozco muy bien el objetivo de tu programa pero supongo que ese sería el fallo, suele pasar. Por otro lado te propongo mejorar la indentación es una manía personal y seguramente tu te aclares más de esa manera, pero siempre que hay problemas ayuda a indentificarlos, te dejo el code arreglado :). Código
|