• Miércoles 20 de Noviembre de 2024, 16:20

Autor Tema:  Re: Funciones O Parametros  (Leído 2976 veces)

MNK

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Funciones O Parametros
« en: Martes 21 de Septiembre de 2004, 02:12 »
0
eso, lo necesito en C porfa, no lo he enkontrado en ninguna parte :cry:


gracias de antemano =)


Hay 10 tipos de personas ke entienden Binario: las ke si y las ke no

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Funciones O Parametros
« Respuesta #1 en: Martes 21 de Septiembre de 2004, 05:57 »
0
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:

NRM

  • Miembro MUY activo
  • ***
  • Mensajes: 279
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.narrowmind.com.ar
Re: Funciones O Parametros
« Respuesta #2 en: Martes 21 de Septiembre de 2004, 06:16 »
0
Como te dijo Blag podria hacer eso utilizando punteros, otra solucion seria utilizar un array para guardar los resultados.

MNK

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Funciones O Parametros
« Respuesta #3 en: Martes 21 de Septiembre de 2004, 20:32 »
0
vale igual gracias, vamos a aplikar punteros =)


pero no keria usar esa opcion :( filo, igual gracias  :comp:  :comp:


Hay 10 tipos de personas ke entienden Binario: las ke si y las ke no

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Funciones O Parametros
« Respuesta #4 en: Martes 21 de Septiembre de 2004, 20:53 »
0
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.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

bufalito

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Funciones O Parametros
« Respuesta #5 en: Miércoles 22 de Septiembre de 2004, 00:02 »
0
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

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Funciones O Parametros
« Respuesta #6 en: Miércoles 22 de Septiembre de 2004, 00:26 »
0
tu solucion es la misma solucion de blag.. no?
yop la veo igual...
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Funciones O Parametros
« Respuesta #7 en: Miércoles 22 de Septiembre de 2004, 01:53 »
0
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

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Funciones O Parametros
« Respuesta #8 en: Miércoles 22 de Septiembre de 2004, 07:19 »
0
ummm ;)
 :comp:
si ya veoo...:think:
lo veo claramente   :photo:

tienes razon ruben!

gracias
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Funciones O Parametros
« Respuesta #9 en: Miércoles 22 de Septiembre de 2004, 08:21 »
0
yo digo que usar el operador '&' es una muy buena solucion
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

bufalito

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Funciones O Parametros
« Respuesta #10 en: Miércoles 22 de Septiembre de 2004, 15:38 »
0
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

MNK

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Funciones O Parametros
« Respuesta #11 en: Jueves 23 de Septiembre de 2004, 04:23 »
0
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:


Hay 10 tipos de personas ke entienden Binario: las ke si y las ke no