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);
};
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
Cita de: Debci en 5 Septiembre 2010, 11:31 AM
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 :P
Cita de: Horricreu en 5 Septiembre 2010, 12:08 PM
Cita de: Debci en 5 Septiembre 2010, 11:31 AM
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 :P
Pero en este caso no es cstdio.h no?
Saludos
Cita a wikipedia:
CitarLos archivos de Cabecera de la biblioteca estándar de C++ no terminan en ".h".
Cita de: Debci en 5 Septiembre 2010, 13:15 PM
Cita de: Horricreu en 5 Septiembre 2010, 12:08 PM
Cita de: Debci en 5 Septiembre 2010, 11:31 AM
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 :P
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 :P
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++.
yo veo que tiene un new int
Cita de: Ari-Slash en 5 Septiembre 2010, 17:25 PM
yo veo que tiene un new int
Y también tiene el operador
delete ;D
Saludos :P
La indentación pesima.
Cita de: Leo Gutiérrez. en 5 Septiembre 2010, 19:35 PM
La indentación pesima.
¿Donde has visto tu indentación?
Indentación nula xD
de todas formas no es nuestro objetivo el de cargarnos la moral del que comparte su codigo xDDDDD