elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con una funcion, por favor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con una funcion, por favor  (Leído 1,551 veces)
jet1994

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Ayuda con una funcion, por favor
« 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


En línea

flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: Ayuda con una funcion, por favor
« Respuesta #1 en: 23 Septiembre 2012, 19:38 pm »

probaste con darle a cada opcion una funcion distinta cosa que te de un return distinto?


En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Re: Ayuda con una funcion, por favor
« Respuesta #2 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.
« Última modificación: 24 Septiembre 2012, 02:48 am por Don Pollo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines