Else if en programacion en C ayuda :-\ -- solucionado, gracias;

Iniciado por Naslednik, 20 Abril 2015, 02:50 AM

0 Miembros y 1 Visitante están viendo este tema.

Naslednik

hola gente, tengo un problema con el comando else if, no estoy muy seguro como funciona  :-\
en teoria el codigo escrito está bien, pero en "build messages" (errores de codigo) me pone
Citar
 24 error: 'else' without a previous 'if'
 27 error: 'else' without a previous 'if'

pero poner un 'if' antes de un 'else' seria volver a crear toda una cadena de 'if'...
y yo solo quiero corregir mi codigo para compilarlo y ejecutarlo =/

que hice mal?, será algo del compilador que no tiene el comando else if?? la libreria stdio.h es la que tengo que utilizar??

aqui abajo dejo el codigo de mi programa.

Citar
#include <stdio.h>

main () {
float i, v, r, a, b, c;

printf("calculadora ley de ohm \t\t(Si no tienes un valor pon 0)");
printf("\n\nIntensidad:\t 0\nVoltaje:\t 0\nResistencia:\t 0\n\n");

printf("Intensidad? \n");
scanf("%f", &i);

printf("Voltaje? \n");
scanf("%f", &v);

printf("resistencia? \n");
scanf("%f", &r);

printf("\n\nIntensidad:\t %.2f\nVoltaje:\t %.2f\nResistencia:\t %.2f\n", i, v, r);

a=v/r;
if (i=0)  printf("intensidad: %.2f", a);

b=i*r;
else if (v=0) printf("Voltaje: %.2f", b);

c=v/i;
else if (r=0) printf("resistencia: %.2f", c);

else printf("lo siento, no puedo calcularlo");

getchar();
getchar();

return 0;
}

gracias de antemano por su ayuda =)

-------------------------------------------

moderadores, me acabo de dar cuenta de que hay un subtema de C/C++, borro este tema y lo reabro en ese subtema?, lo mueven ustedes?? o lo dejo tal cual y si me surge otra duda la consulto en dicho subtema?? gracias y perdón por las molestias =)
preguntas concretas tienen respuestas concretas. procura no preguntar nada tan "generico" si no quieres respuestas tan "genericas".

engel lex

-> inicio if ->if (i=0) printf("intensidad: %.2f", a);<-fin if

b=i*r; <-linea fuera del if

else huerfano-> else if (v=0) printf("Voltaje: %.2f", b);


Código (cpp) [Seleccionar]
if(condicion){
 accion_en_if();
 variable_en_if=algo;
}else{
 accion_en_else();
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

DarK_FirefoX

#2
El problema es que estás haciendo:

Código (cpp) [Seleccionar]

if (i=0)  printf("intensidad: %.2f", a);
b=i*r; //<<<--- Linea fuera del if
else if (v=0) printf("Voltaje: %.2f", b);


Si te das cuenta, entre la sentencia del if y el else if tienes dos lineas de código que no están encerradas entre {}, por lo tanto solo:

Código (cpp) [Seleccionar]
printf("intensidad: %.2f", a);

Se ejecutara cuando se cumpla la condición del if, luego ejecutará:

Código (cpp) [Seleccionar]
b=i*r;

Y por lo tanto el else if no formara parte de nada.

Si

Código (cpp) [Seleccionar]
b=i*r;

se supone que ejecute si se cumple la condición deberías haber dicho:

Código (cpp) [Seleccionar]

if (i=0)
{
printf("intensidad: %.2f", a);
b=i*r;
}
else if (v=0) printf("Voltaje: %.2f", b);


Ese error lo cometes en diferentes partes.

Te explico el if else if funciona así:

Código (cpp) [Seleccionar]
if(condición1)
{
//Linea1 que se ejecutan si se cumple la condición1
//Linea2 que se ejecutan si se cumple la condición1
//...
}
else if(condición2)
{
//Linea3 que se ejecutan si no se cumple la condición1 y se cumple la condición2
//Linea4 que se ejecutan si no se cumple la condición1 y se cumple la condición2
//...
}


Salu2s

Naslednik

#3
ah...  :D ahora me funciona!!

que denante tuve un problema por dejar el calculo muy lejos de las variables, así que decidí dejarlo lo mas cerca del punto donde se necesitase xD y sin querer deje unos 'else huerfanos'  :P

así está mi codigo ahora y me lo compila y ejecuta :3 gracias chicos!!

Citar
a=v/r; b=i*r; c=v/i;
if (i=0)  printf("intensidad: %.2f", a);

else if (v=0) printf("Voltaje: %.2f", b);

else if (r=0) printf("resistencia: %.2f", c);

else printf("lo siento, no puedo calcularlo");

claro que sigo sin poder hacer que haga lo que yo quiero, pero ya me voy a cabecear para que me salga y si me encuentro con alún otro problema y no le encuentro la solucion, ya preguntaré.  :)
preguntas concretas tienen respuestas concretas. procura no preguntar nada tan "generico" si no quieres respuestas tan "genericas".

engel lex

usa corchetes con los if... el programa será igual a nivel ensamblador, pero será muchisimo más legible y evitarás esos errores causados por falta de corchetes
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Naslednik

y en cuanto al subforo al cual tengo que preguntar... sigo preguntando aqui o me voy al subforo que le corresponde?? (C/C++)
preguntas concretas tienen respuestas concretas. procura no preguntar nada tan "generico" si no quieres respuestas tan "genericas".

engel lex

esto corresponde a c++, ya fue movido
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Naslednik

preguntas concretas tienen respuestas concretas. procura no preguntar nada tan "generico" si no quieres respuestas tan "genericas".