Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jet1994 en 23 Septiembre 2012, 19:15 pm



Título: Ayuda con una funcion, por favor
Publicado por: jet1994 en 23 Septiembre 2012, 19:15 pm
necesito ayuda con una duda por favor:
tengo tres argumentos ingresados:
en el primer argumento puede ser:+, - ,* o /
en el segundo y tercero es un numero

funcion(int argc,char *argv[]{
float a,b;
a=atof(argv[2]);
b=atof(argv[3]);
if (*argv[1]=='+'){ return(a+b);}
if (*argv[1]=='-'){ return(a-b);}
if (*argv[1]=='*'){ return(a*b);}
if (*argv[1]=='/'){ return(a/b);}
}
lo que necesito es que segun lo que esta en el primer argumento retornar la operacion que me indique
(lo que esta arriba es un ejemplo de lo que quiero hacer, yo se que esta malpor que solo se puede usar un return,pero necesito la manera de correcta de hacerlo)
es necesario retornar la operacion
Gracias de antemano


Título: Re: Ayuda con una funcion, por favor
Publicado por: flony en 23 Septiembre 2012, 19:38 pm
probaste con darle a cada opcion una funcion distinta cosa que te de un return distinto?


Título: Re: Ayuda con una funcion, por favor
Publicado por: Don Pollo en 24 Septiembre 2012, 02:36 am
Así funciona correctamente:

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5. float funcion(char *argv[]){
  6.    float a,b;
  7.    a=atof(argv[2]);
  8.    b=atof(argv[3]);
  9.    if (*argv[1]=='+'){ return(a+b);}
  10.    if (*argv[1]=='-'){ return(a-b);}
  11.    if (*argv[1]=='x'){ return(a*b);}
  12.    if (*argv[1]=='/'){ return(a/b);}
  13.  
  14.    return -1;
  15. }
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19.  
  20.    cout << funcion(argv) << endl;
  21.    return 0;
  22. }

Te enumero los errores que he encontrado:
  • Faltaba un paréntesis en la cabecera de la función.
  • No has puesto la función main().
  • No has determinado en la cabecera de la función qué tipo de dato a devolver.
  • No sé porqué, pero el operador '*' no lo reconoce, lo he tenido que cambiar por 'x'.
  • No está mal porque hayas puesto más de un return, es más, lo debes hacer así. (Esto realmente no es un error)
  • No habías considerado el hecho de que no entrase por ningún if, por lo que deberías incluir otro return (en mi caso el que devuelve -1)
  • El argumento argc no lo usas para nada, por lo que lo puedes omitir de la cabecera de la función.
  • Aunque yo tampoco lo haya hecho, deberías incluir en tus códigos lineas de comprobación para verificar que todos los parámetros son correctos y mostrar mensajes de error en caso de que no lo sean.