🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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!!!
#901
Author: Nork_MG
Date: Tue, 22 May 2007 21:31
83 lines
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!!!
#906
Author: Rafael Meneses Osorio
Date: Wed, 23 May 2007 15:21
121 lines
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