Dev - C++ - funciones

   
Vista:

funciones

Publicado por sergio (1 intervención) el 31/05/2013 06:57:01
me piden implementar una funcion que calcule la capacitancia equivalente de 3 capacitores en serie y paralelo.los valores deben ser ingresados por teclado.el programa me compila y ejecuta sin ningun error pero el problema esta en que al ingresar "paralelo" me ejecuta como si ubiese ingresado serie,la funcion que deberia aplicarse es la paralelo pero aplica la funcion serie,me podrian ayudar a encontrar el error por favor para poder corregirlo muchas gracias.


#include<iostream.h>
#include<conio.h>

double serie(double a,double b,double c){
double z;
z=(c*b*a)/(b*c+a*c+b*a);
return z;
}
double paralelo(double m,double n,double p){
double y;
y=m+n+p;
return y;
}

int main(){
double ceq=0;
double c1,c2,c3;
char c[10];
cout<<"Indique si estan en paralelo o en serie: ";cin>>c;
cout<<"Ingrese capacitor 1: ";cin>>c1;
cout<<"Ingrese capacitor 2: ";cin>>c2;
cout<<"Ingrese capacitor 3: ";cin>>c3;
if(strcmp(c,"paralelo")){
ceq=paralelo(c1,c2,c3);
}

else if(strcmp(c,"serie")){
ceq=serie(c1,c2,c3);
}
cout<<"La capacitancia equivalente en "<<c<<" es: "<<ceq<<endl;
getch();
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

funciones

Publicado por Capitan Kirk capitan.kirk09@gmail.com (44 intervenciones) el 31/05/2013 08:53:13
La función strcmp devuelve un entero mayor que cero si la primera cadena es mayor que la segunda, cero si ambas son iguales y menor que cero si la primera es menor que la segunda.

Por tanto, si introduces "paralelo", el resultado de la primera comparación es cero y te va a ejecutar el else. El resultado de la comparación del else es distinto de cero, por lo que te va a llamar a la función serie.

Si introduces "serie", el resultado de la primera comparación va a ser distinto de cero y te va a llamar a la función paralelo.

De hecho, si le introduces cualquier cosa que no sea "paralelo" te va a procesar paralelo, y si le introduces "paralelo" te va a priocesar serie.

Conclusión: Debes cambiar los if:

1
2
3
4
5
6
7
8
9
10
if (strcmp(c,"paralelo") == 0)
{
='editor_indent'>ceq=paralelo(c1,c2,c3);
}
else if (strcmp(c,"serie") == 0)
{
='editor_indent'>ceq=serie(c1,c2,c3);
}
else
='editor_indent'>ceq = 0; // No se ha introducido serie ni paralelo


Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar