Dev - C++ - Invocacion de Funciones con Punteros

 
Vista:

Invocacion de Funciones con Punteros

Publicado por Fabian (4 intervenciones) el 22/05/2007 22:31:26
Hola.... Bueno la verdad es que tengo un problemilla que me ha estado matando hace un par de horas y no le encuentro solucion....bueno resulta que tengo lo suiguiente:

#include<stdio.h>
#include<stdlib.h>

int V[10]={1,2,3,1,2,3,1,2,3,1};
int G[10]={1,3,1,3,1,3,1,3,1,3};

int suma(int *p, int *d){
int c=0;
for(int i=0,n=9;i<=9,n>=0;i++,n--){
p=&V[i];
*d=G[n];
c=(*p)+(*d)+c;
}
return c;
}
int multi(int *p, int *d){
int c=1;
for(int i=0,n=9;i<=9,n>=0;i++,n--){
*p=V[i];
*d=G[n];
c=c*(*p)*(*d);
}
return c;
}
main(){
int opc,*p,*d,sum,mult;
int *x=&V[0],*y=&G[10];
MENU:
printf("\t\tSuma o Multiplicacion de Vectores");
printf("\n\nElija Una Opcion:");
printf("\n\n1.- Sumar Todos los Elementos de los Vectores");
printf("\n\n2.- Multiplicar Todos los Elementos de los Vectores");
printf("\n\n3.- Salir");
printf("\n\n\t\t\t\t Opcion: ");
scanf("%d",&opc);


switch(opc){
case 1:{
sum=suma(x,y);
printf("\nLa Suma de los Componentes de los Vectores es: %d\n\n",sum);
system("pause");
system("cls");
goto MENU;
break;
}
case 2:{
mult=multi(x,y);
printf("\nLa Multiplicacion de los Componentes de los Vectores es: %d\n\n",mult);
system("pause");
system("cls");
goto MENU;
break;
}
case 3:
exit(1);

default:{
printf("Opcion no Valida!!!!");
printf("\n\nERROR FATAL.....FORMATEA EL PC!!!! CUECK\n\n");
system("pause");
system("cls");
goto MENU;
}
}
}

pero lo que necesiti es tener una funcion por ejemplo

int func(int *p, int *d, int opc)

y en el main pedir que se escoja la operacion y que desde el main, mediante la opcion me tire a la funcion en la cual debe tener las operaciones....bueno mi duda en si es como invoco la funcion a traves de un numero que infrese el usuario....Bueno esop, si alguien pudiera contestar mi duda estaria muy agradecido!!!1

XD thanks!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Invocacion de Funciones con Punteros

Publicado por Tom (65 intervenciones) el 24/05/2007 22:22:50
Puedes usar punteros a funciones igual que punteros a variables.
Algo así como:

int fsuma(int a, int b);
int fmulti(int a, int b);
int fdiv(int a, int b);

/* */
main() {
int (*funcs[])(int, int) = { fsuma, fmulti, fdiv };

...

result = funcs[opc](a, b);
...
}

/* */
int fsuma(int a, int b) {
return(a+ b);
}
...
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:derivadas

Publicado por karla (1 intervención) el 07/11/2010 03:44:25
quiero hallar la derivada de una funcion que tenga maximo de 10, 5 terminos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar