Autor
|
Tema: [c++] Source de uso de punteros a funciones (Leído 5,851 veces)
|
maxiestuinge
Desconectado
Mensajes: 19
|
Hola a todos. Me gustaria compartir el siguiente codigo con ustedes,lo hice con fines pedagogicos,para ver si entiendo mejor lo que es un puntero a funcion. El codigo esta comentado ,cualquier duda que les pueda resolver o criticas son bienvenidas Espero les sea util.Saludos #include<stdio.h> /*Programa que utiliza punteros a funciones para realizar una operacion segun los valores introducidos*/ void operacion(int,int,int*,int(*func)(int,int)); /* 1) primer valor(int) 2) segundo valor(int) 3) puntero a resultado(int*) 4) puntero a funcion que opera con (1) y (2) como argumentos pero devuelve el valor de la operacion modificando el contenido de (3) */ int suma(int a,int b);//primer operacion: a+b int resta(int a,int b);//segunda operacion: a-b int main(int argc,char*argv[]) { int*c=new int;//lugar donde se guardara el resultado int a,b;//variables que recibiran los datos con los cuales operar scanf("%d%d",&a,&b);//entrada de datos operacion(a,b,c,(a>b)?&suma:&resta);//evaluacion:si a> b sumo a+b sino resto b-a printf("\n%d%c%d------------------>%d",a,(a>b)?'+':'-',b,*c);//evaluacion si a>b muestro una suma,sino muestro una resta fflush(stdin);//limpio el buffer de basura getc(stdin);//recibo algun caracter de la entrada standart(solo para que no se cierre la consola),aunque lo puedo cambiar por getchar() delete c;//liberamos la memoria reservada return 0; } //no necesita explicacion////////////////////// int suma(int a,int b) { return (a+b); } int resta(int a,int b) { return (b-a); } ////////////////////////////////////////// void operacion(int a,int b,int*c,int(*func)(int,int)) { *c=func(a,b); };
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Esta bien hecho, solo que estari mucho mejor y mas estandarizado si usases libs del C++ standard, stdio, me refiero a las funciones de entrada y salida cout y cin por ejemplo, que traen sus homólogos para limpiar buffer y esas operaciones necesarias.
Saludos
|
|
|
En línea
|
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Esta bien hecho, solo que estari mucho mejor y mas estandarizado si usases libs del C++ standard, stdio, me refiero a las funciones de entrada y salida cout y cin por ejemplo, que traen sus homólogos para limpiar buffer y esas operaciones necesarias.
Saludos
Puede utilizar perfectamente las funciones de la librería stdio, solamente cambia su nombre a cstdio. En general, todas las librerías de C se pueden utilizar para C++ añadiendo la letra ce delante de sus nombres como en el ejemplo que he puesto. Saludos
|
|
« Última modificación: 5 Septiembre 2010, 12:15 pm por Horricreu »
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Esta bien hecho, solo que estari mucho mejor y mas estandarizado si usases libs del C++ standard, stdio, me refiero a las funciones de entrada y salida cout y cin por ejemplo, que traen sus homólogos para limpiar buffer y esas operaciones necesarias.
Saludos
Puede utilizar perfectamente las funciones de la librería stdio, solamente cambia su nombre a cstdio. En general, todas las librerías de C se pueden utilizar para C++ añadiendo la letra ce delante de sus nombres como en el ejemplo que he puesto. Saludos Pero en este caso no es cstdio.h no? Saludos
|
|
|
En línea
|
|
|
|
cbug
Desconectado
Mensajes: 147
|
Cita a wikipedia: Los archivos de Cabecera de la biblioteca estándar de C++ no terminan en ".h".
|
|
|
En línea
|
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Esta bien hecho, solo que estari mucho mejor y mas estandarizado si usases libs del C++ standard, stdio, me refiero a las funciones de entrada y salida cout y cin por ejemplo, que traen sus homólogos para limpiar buffer y esas operaciones necesarias.
Saludos
Puede utilizar perfectamente las funciones de la librería stdio, solamente cambia su nombre a cstdio. En general, todas las librerías de C se pueden utilizar para C++ añadiendo la letra ce delante de sus nombres como en el ejemplo que he puesto. Saludos Pero en este caso no es cstdio.h no? Saludos Exacto, es lo que dijo cbug. Igualmente, si miras mis mensajes, cuando escribo una librería sea de C o no, nunca la escribo con .h. Lógicamente, si programo y alguna librería lo requiere, pongo el .h. Pero en mis mensajes nunca, es un vicio. Saludos
|
|
|
En línea
|
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
Nooooooooooooooooooooo... el titulo es que tiene un error, es extraño que alguien se equivoque escribiendo todo en C y luego diga que es C++.
|
|
|
En línea
|
|
|
|
Ari Slash
|
yo veo que tiene un new int
|
|
|
En línea
|
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
yo veo que tiene un new int
Y también tiene el operador delete Saludos
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
La indentación pesima.
|
|
|
En línea
|
|
|
|
|
|