Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - maxiestuinge

#1
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 ;) ;)

Código (cpp) [Seleccionar]


#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);
     
};