Thread View: chile.comp.programacion
2 messages
2 total messages
Started by Nork_MG
Tue, 22 May 2007 21:31
Problemilla...invocacion de funciones con punteros!!!
Author: Nork_MG
Date: Tue, 22 May 2007 21:31
Date: Tue, 22 May 2007 21:31
83 lines
2984 bytes
2984 bytes
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!!!
Re: Problemilla...invocacion de funciones con punteros!!!
Author: Rafael Meneses Osorio
Date: Wed, 23 May 2007 15:21
Date: Wed, 23 May 2007 15:21
121 lines
3957 bytes
3957 bytes
>
> 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];
Aqui no debieras utilizar V y G, ya que cuando uses la funcion suma,
debieras pasar V y G, por ejemplo:
suma(V,G);
y dentro de la funcion utilizas p y d solamente.
> 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];
Esta ultima linea esta misteriosa... &V[0] es lo mismo que V, y la
asignacion a y, no sé que sentido tiene....
> 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);
Porque no pasas V y G, y no te enredas con x e 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
Podrias hacer un arreglo de punteros a funciones, como
#include <stdio.h>
typedef void (*tipoPunteroAFuncion) (char *p,char *d);
void concatena(char* a,char *b)
{
printf("%s%s\n",a,b);
}
void inserta(char* a,char *b)
{
printf("%s%s\n",b,a);
}
tipoPunteroAFuncion arreglo[]=
{
&concatena,
&inserta
};
int main(int argc,char **argv)
{
(arreglo[0])("hola","mundo");
(arreglo[1])("hola","mundo");
return 0;
}
Lo hice con otros parametros pa no hacerte la tarea XD
>
> XD thanks!!!
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads