SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: MNK en Martes 21 de Septiembre de 2004, 02:12

Título: Re: Funciones O Parametros
Publicado por: MNK en Martes 21 de Septiembre de 2004, 02:12
eso, lo necesito en C porfa, no lo he enkontrado en ninguna parte :cry:


gracias de antemano =)
Título: Re: Funciones O Parametros
Publicado por: Blag en Martes 21 de Septiembre de 2004, 05:57
Para devolver más de un valor tienes que utilizar Referencias, no se si funcionen en C.....Yo las utilizo en C++  :smartass:

Código: Text
  1.  
  2. #include <iostream>   //Librería para cout y cin
  3. #include <conio.h>        //Librería para clrscr() y getch()
  4.  
  5. using namespace std;
  6.  
  7. int Potencias(int, int &, int &);   //Definimos la cabecera de la función
  8.  
  9. int main()
  10. {
  11. int numero,cuadrado,cubo;
  12.  
  13. cout<<"Ingresa un número positivo: ";
  14. cin>>numero;   //Leemos el valor ingresado por teclado
  15.  
  16. Potencias(numero, cuadrado, cubo);  //Llamamos al función
  17.  
  18. cout<<"numero: "<<numero<<"\n";   //Imprimimos los valores
  19. cout<<"cuadrado: "<<cuadrado<<"\n";
  20. cout<<"cubo: "<<cubo<<"\n";
  21.  
  22. getch();  //Copiamos la pantalla
  23. }
  24.  
  25. int Potencias(int numero, int &rCuadrado, int &rCubo)
  26. //Dos de los tres parámetros, son referencias
  27. {
  28. rCuadrado = numero*numero;
  29. rCubo = numero*numero*numero;
  30. }
  31.  
  32.  

Saludos,

Blag  :devil:
Título: Re: Funciones O Parametros
Publicado por: NRM en Martes 21 de Septiembre de 2004, 06:16
Como te dijo Blag podria hacer eso utilizando punteros, otra solucion seria utilizar un array para guardar los resultados.
Título: Re: Funciones O Parametros
Publicado por: MNK en Martes 21 de Septiembre de 2004, 20:32
vale igual gracias, vamos a aplikar punteros =)


pero no keria usar esa opcion :( filo, igual gracias  :comp:  :comp:
Título: Re: Funciones O Parametros
Publicado por: JuanK en Martes 21 de Septiembre de 2004, 20:53
yo utilizaria mejor una estructura.. aunque eso depende del caso...
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
struct retorno
{
   int retornoUno;
   char retornoDos;
   char retornoTres[10];
}

int main()
{
   struct retorno ret;

   ret = Prueba();
   printf("resultados: \n retornoUno :%d\nretornoDos:%c\nretornoTres:%s",ret.retornoUno, ret.retornoDos, ret.retornoTres);
   return 1;
}

struct retorno Prueba()
{
   struct retorno devuelve;
  
    memset(devuelve.retornoTres,'\0', sizeof(devuelve.retornoTres));

    devuelve.retornoUno = 32600;
    devuelve.retornoDos = 'J';
    strcpy(devuelve.retornoTres,"JuanK");  

    return devuelve;
}
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Espero que el ejemplo te sirva de utilidad.
Título: Re: Funciones O Parametros
Publicado por: bufalito en Miércoles 22 de Septiembre de 2004, 00:02
Lo que tienes que hacer es utilizar punteros y referencias como muestra el siguiente código:

Código: Text
  1.  
  2.  
  3. void MiFuncion(int *parametro1,char *parametro2)
  4. {
  5.    (*parametro1)=1;
  6.    (*parametro2)='a';
  7. }
  8.  
  9. void main()
  10. {
  11.    int variable1;
  12.    char variable2;
  13.  
  14.    MiFuncion(&variable1,&variable2);
  15. }
  16.  
  17.  
  18.  

Explico un poco lo anterior:

1. En el programa principal (funcion MAIN) se declaran las variables que tu quieres que recibir desde la función susodicha (en este caso MiFuncion).

2. Llamas a la funcion en cuestión enviando "la referencia" donde se almacenarán los valores a ser devueltos, o en diferentes palabras, enviando "la dirección de memoria" de dichas variables.

3. La función MiFuncion utiliza unos punteros para saber donde almacenará la información a ser devuelta.

No se si me explico bien. La utilización de puntores y referencias es, a mi huimilde parecer, uno de los conocimientos clave para poder programar y entender como funciona el lenguaje C.

La solución de nuestro amigo BLAG (al cual no conozco porque soy nuevo en esto... pero saludos  :D) no funciona en C pero si en C++ (lo cual es una bendición). Esa forma de recibir referencias es muy parecida al VAR de pascal, la verdad un buen trabajo de los diseñadores del C++.

La solución de nuestro amigo JUANK tambien es interesante, eso si, siempre y cuando no tengas muchas funciones de este tipo porque terminarias creando una cantidad impresionante de tipos... no se... en una de esas es practico... asi que yo mismo me pondre a ver que tal.

Espero te ayude en algo,

Bufa
Título: Re: Funciones O Parametros
Publicado por: JuanK en Miércoles 22 de Septiembre de 2004, 00:26
tu solucion es la misma solucion de blag.. no?
yop la veo igual...
Título: Re: Funciones O Parametros
Publicado por: Ruben3d en Miércoles 22 de Septiembre de 2004, 01:53
Citar
tu solucion es la misma solucion de blag.. no?
yop la veo igual...
No. Blag está usando las referencias de C++. Bufalito está pasando los parámetros con punteros a là C, que también es llamado 'pasar por referencia'. En C++ este proceso se simplifica usando las referencias (que es herramienta del lenguaje), que evitan tener que usar explícitamente los punteros. Por ello es buena costumbre usar const con los parámetros que no se modificarán, para diferenciarlos.

Un saludo.

Ruben3d
Título: Re: Funciones O Parametros
Publicado por: JuanK en Miércoles 22 de Septiembre de 2004, 07:19
ummm ;)
 :comp:
si ya veoo...:think:
lo veo claramente   :photo:

tienes razon ruben!

gracias
Título: Re: Funciones O Parametros
Publicado por: LeGatoRojo en Miércoles 22 de Septiembre de 2004, 08:21
yo digo que usar el operador '&' es una muy buena solucion
Título: Re: Funciones O Parametros
Publicado por: bufalito en Miércoles 22 de Septiembre de 2004, 15:38
Si, la verdad que usar el operador & en la declaración de la función es la MEJOR idea puesto que kla programación se hace más limpia y las funciones más claras. Sin embargo, vuelvo a repertir, el operador & en las funciones solo sirve en C++ ya que no es soportado por el lenguaje C puro.

Saludos,

Bufalito
Título: Re: Funciones O Parametros
Publicado por: MNK en Jueves 23 de Septiembre de 2004, 04:23
Cita de: "bufalito"
Lo que tienes que hacer es utilizar punteros y referencias como muestra el siguiente código:

Código: Text
  1.  
  2.  
  3. void MiFuncion(int *parametro1,char *parametro2)
  4. {
  5.    (*parametro1)=1;
  6.    (*parametro2)='a';
  7. }
  8.  
  9. void main()
  10. {
  11.    int variable1;
  12.    char variable2;
  13.  
  14.    MiFuncion(&variable1,&variable2);
  15. }
  16.  
  17.  
  18.  

Explico un poco lo anterior:

1. En el programa principal (funcion MAIN) se declaran las variables que tu quieres que recibir desde la función susodicha (en este caso MiFuncion).

2. Llamas a la funcion en cuestión enviando "la referencia" donde se almacenarán los valores a ser devueltos, o en diferentes palabras, enviando "la dirección de memoria" de dichas variables.

3. La función MiFuncion utiliza unos punteros para saber donde almacenará la información a ser devuelta.

No se si me explico bien. La utilización de puntores y referencias es, a mi huimilde parecer, uno de los conocimientos clave para poder programar y entender como funciona el lenguaje C.

La solución de nuestro amigo BLAG (al cual no conozco porque soy nuevo en esto... pero saludos  :D) no funciona en C pero si en C++ (lo cual es una bendición). Esa forma de recibir referencias es muy parecida al VAR de pascal, la verdad un buen trabajo de los diseñadores del C++.

La solución de nuestro amigo JUANK tambien es interesante, eso si, siempre y cuando no tengas muchas funciones de este tipo porque terminarias creando una cantidad impresionante de tipos... no se... en una de esas es practico... asi que yo mismo me pondre a ver que tal.

Espero te ayude en algo,

Bufa
muchas gracias, te pasaste =)  :kicking:  :kicking:  :kicking:  :kicking:  :kicking:  :kicking: