Ayuda con una funcion, por favor

Iniciado por jet1994, 23 Septiembre 2012, 19:15 PM

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

jet1994

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

flony

probaste con darle a cada opcion una funcion distinta cosa que te de un return distinto?
si un problema no tiene solucion entonces no es un problema...es algo inevitable

Don Pollo

#2
Así funciona correctamente:

Código (c++) [Seleccionar]
#include <iostream>
#include <cstdlib>
using namespace std;

float funcion(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]=='x'){ return(a*b);}
   if (*argv[1]=='/'){ return(a/b);}

   return -1;
}

int main(int argc, char *argv[])
{

   cout << funcion(argv) << endl;
   return 0;
}


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.