Hola, vamos a ver algo muy loco, algo que nose si en otros lenguajes se pueda, pero en C obiamente SI 
hace un tiempo descubri q se podia hacer esto y me quede
:
:
xDDD
/**********************************************************/
/**********************************************************/
#include "stdio.h"
typedef int (*_func)(char *, ...);
_func func[10];
int main(void)
{
func[5] = (_func)printf;
func[5]("hola mundo!\n");
getchar();
return 0;
}
utilize func[5] solo para demostrar que estoy trabajando con el array

no puse getchar dentro del array porque getchar esta declarado diferente que printf...
veamos una utilidad buena para esto del array de funciones:
/**********************************************************/
#include "stdio.h"
typedef float (*_func)(float, float);
float add(float a, float b)
{
return a + b;
}
float sub(float a, float b)
{
return a - b;
}
float mul(float a, float b)
{
return a * b;
}
float div(float a, float b)
{
if(b == 0)
return 0;
return a / b;
}
/*cargamos nuestro vector de funciones...*/
_func func[4] = {add, sub, mul, div};
int main(void)
{
int num = 0;
float a,b;
printf("Ingrese 2 numeros\n");
scanf("%f %f", &a, &b);
while(num > 4 || num < 1){
printf("1 - Sumar\n2 - Restar\n3 - Multiplicar\n4 - Dividir\n");
scanf("%d", &num); /*gracias Anibal xD*/
}
num--;
/*por el metodo "tradicional" tendria que venir un switch o varios ifs...*/
printf("Resultado: %f\n", func[num](a, b));
while(getchar() != '\n'); /*la forma que utiliza Ramc para vaciar el buffer xD*/
getchar();
}
/**********************************************************/
bueno, eso es todo, creo q es facil de entender
salu2!
P.D: pufff hace cuanto q no posteaba en C!!


5 comentarios:
Fe de erratas XD:
donde dice:
---------------------------------------
while(num > 4 || num < 1){
printf("1 - Sumar\n2 - Restar\n3 - Multiplicar\n4 - Dividir\n", &num);
scanf("%d");
}
---------------------------------------
debe decir:
---------------------------------------
while(num > 4 || num < 1){
printf("1 - Sumar\n2 - Restar\n3 - Multiplicar\n4 - Dividir\n");
scanf("%d", &num);
}
---------------------------------------
Para el ojo con vista rápida, el &num no va en el printf sino en el scanf.
hola anibal.
jejejje xDDD muy estupido de mi parte jeje
y ahora que lo veo me rio porque como intente escribirlo "apurado" sin compilar al final me dije "vamos a probarlo" lo probe, funcionaba y listo, lo postie xDxD
gracias por avisarme.
me fije si el otro scanf estaba bien, y ese si, menos mal xDD
salu2!
¿Tú eres Anibal el de .net?
Ni0 el link te lo mandé por msn una vez. xD
¿qué .net es ese?
Perdón ni0, no tiene nada que ver ésto :P
link
No hay nada que hacer....
dreams eater
Publicar un comentario en la entrada