Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 20-08-2011
linuxtin linuxtin is offline
Miembro
 
Registrado: jun 2011
Posts: 30
linuxtin Va por buen camino
Duda con transferencia de parámetros de valor entre dos funciones..

Holaa, como andan!! Tengo problemas para transferir parámetro de una función a otra como valor acá dejo parte del codigo..



Código:
calcular(s)


{
     int i,s;
     
     if (n>m) 
       {
           s=n;
           for (i=1 ;i<=n; i++)
          {
            c[i]=(a[i]+b[i]);  
          }    
       }
     
     else
       {  
         s=n;            
         for (i=1 ;i<=m; i++)
          {
            c[i]=(a[i]+b[i]);  
          }    
       } 
     printf("La suma ha sido calculada");
     
     return 0;     
}



imprimir(int s)


{
     int i;
     system("clear");
     
     printf("El Vector A es:\n");
     for (i=1 ;i<=n; i++)
      {
        printf(" %d ",a[i]);  
          
      }    
     
     printf("\nEl Vector B es:\n");
     for (i=1 ;i<=m; i++)
      {
        printf(" %d ",b[i]);  
          
      }    
    
     
     printf("\nLa suma es:\n");
     for (i=1 ;i<=s; i++)
      {
        printf(" %d ",c[i]);  
          
      }    
     
     
     
     getchar();    
     return 0;     
}

La primera función suma dos vectores y guarda en la variable s el tamaño del vector mas grande, para luego imprimirlo en la función de abajo.

Si alguien me puede dar una mano, gracias!!!!

Última edición por Casimiro Notevi fecha: 20-08-2011 a las 21:26:25.
Responder Con Cita
  #2  
Antiguo 20-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 8.007
ecfisa Es un diamante en brutoecfisa Es un diamante en brutoecfisa Es un diamante en bruto
Hola linuxtin.

No entiendo bién cual es tu duda, pero para pasar los arreglos como argumento:
Código:
int calcular(int *a, int *b, int *c)
{
...
O también de este modo:
Código:
int imprimir(int a[], int b[], int c[])
{
...
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 20-08-2011 a las 21:51:33.
Responder Con Cita
  #3  
Antiguo 20-08-2011
linuxtin linuxtin is offline
Miembro
 
Registrado: jun 2011
Posts: 30
linuxtin Va por buen camino
Hola ecfisa, antes que nada gracias por responder y por ayudarme!!!


Lo que quiero hacer es pasar una variable de una función a otra, un parámetro con valor, para resumirlo un poco, quiero que el valor que toma la variable s, llegue a la función imprimir.
Responder Con Cita
  #4  
Antiguo 20-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 8.007
ecfisa Es un diamante en brutoecfisa Es un diamante en brutoecfisa Es un diamante en bruto
Hola.

Para pasar un argumento a otra función sólo tenes que declararlo en la cabecera de la función.

Generalmente los argumentos se pasan por valor donde la función recibe la copia del valor de la variable que se le pasa, por ej:
Código:
/* func no puede modificar el valor 
   de la variable enviada en el argumento */
int func(int a)
{
  a = 11;
}
Si llamamos func(v), pasándole la variable v = 2, luego de la llamada, v seguirá teniendo el valor 2.

Pero se pueden pasar por referencia donde la función recibe la dirección de memoria de la variable por lo que en este caso tiene total control, por ej:
Código:
/* func puede modificar el valor 
   de la variable enviada en el argumento */
int func(int *a)
{
  a = 11;
}
Si llamamos func(v), pasándole la variable v = 2, luego de la llamada v será igual a 11.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 21-08-2011 a las 00:09:48.
Responder Con Cita
  #5  
Antiguo 21-08-2011
linuxtin linuxtin is offline
Miembro
 
Registrado: jun 2011
Posts: 30
linuxtin Va por buen camino
Hola ecfisa otra vez gracias!!

Acá arme un pedacito de código, la verdad que no lo puedo hacer andar.

Código Delphi [-]
#include 

main() 

{
   
    cargar();
    
    imprimir();
    
    return 0;
    
}


cargar(i)


{
     int i=5;    
     
     return 0;
}






imprimir(int i)

{
    
  printf("El numero es %d ",i);    
  return 0;    
    
}


Muchas gracias!!!!
Responder Con Cita
  #6  
Antiguo 21-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 8.007
ecfisa Es un diamante en brutoecfisa Es un diamante en brutoecfisa Es un diamante en bruto
Hola linuxtin.

Código:
int cargar(int *v);
int imprimir(int v);

int main(int argc, char* argv[])
{
  int valor;
  cargar(&valor);
  imprimir(valor);
  getchar();
  return 0;
}

int cargar(int *v)
{
  *v = 5;
  return 0;
}

int imprimir(int v)
{
  printf("El numero es %d ",v);
  return 0;
}
Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 21-08-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 146
_cero_ Va por buen camino
En una función, los parámetros pueden pasar de dos formas.
1 por valor, en este caso los valores se copian a objetos de la función y se destruyen cuando se termina la función.
Ejem.
Código:
  Void MiFuncion(int s) {
   ...
  }
2 por referencia (la cual, me imagino que es la que buscas),en este otro caso las variables introducidas guardan cualquier modificación que se les haga dentro de la función.
Ejem.
Código:
  Void MiFuncion(int &s){
...

  }
quedaria asi mas o menos.
Código:
main()  {     
  int s;     
  cargar( s );          
  imprimir( s );          
  return 0;      
}   
cargar(int& i) {      
  i=5;  
}  
imprimir(int i) {   
  printf("El numero es %d ",i);       
  return 0;          
}
Pd. No te olvides delos valores de retorno.
pd2. La solución de ecfisa también es muy válida, solo que esta es con punteros, algo que creo se debe comprender a la perfección, antes de usarlos.

Última edición por _cero_ fecha: 21-08-2011 a las 01:03:25.
Responder Con Cita
  #8  
Antiguo 21-08-2011
linuxtin linuxtin is offline
Miembro
 
Registrado: jun 2011
Posts: 30
linuxtin Va por buen camino
Bueno muchas gracias a los dos!!


Ahora si me quedo claro, con un ejemplo de cada uno de ustedes!!

Gracias ecfisa, cero por tomarse su tiempo y ayudarme!
Responder Con Cita
  #9  
Antiguo 21-08-2011
linuxtin linuxtin is offline
Miembro
 
Registrado: jun 2011
Posts: 30
linuxtin Va por buen camino
Hola cero, quise probar tu ejemplo, pero no lo pude compilar me da error.

Saludos!
Responder Con Cita
  #10  
Antiguo 21-08-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 146
_cero_ Va por buen camino
Eso es porque está incompleto, solo te puse el ejemplo de como iría, pero uno compilable seria:
Código:
#pragma hdrstop

#include <tchar.h>
#include <stdio.h>
#include <conio.h>
//---------------------------------------------------------------------------

#pragma argsused
//---------------------------------------------------------------------------

void cargar( int& i )
{
    i = 5;
}
//---------------------------------------------------------------------------
void imprimir( int i )
{
    printf( "El numero es %d ", i );
}
//---------------------------------------------------------------------------
int main()
{
    int s;
    cargar( s );
    imprimir( s );
    getch();
    return 0;
}
Responder Con Cita
  #11  
Antiguo 21-08-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 146
_cero_ Va por buen camino
mmm santo error, estas programando en C o C++? Porque no recuerdo bien pero creo que en C todos los parámetros se pasan por valor, con lo cual solo el ejemplo de ecfisa, funcionaria y quedaría más o menos así:
Código:
#pragma hdrstop

#include <tchar.h>
#include <stdio.h>
#include <conio.h>
//---------------------------------------------------------------------------

#pragma argsused
//---------------------------------------------------------------------------
void cargar( int* i )
{
    *i = 5;
}
//---------------------------------------------------------------------------
void imprimir( int i )
{
    printf( "El numero es %d ", i );
}
//---------------------------------------------------------------------------
int main()
{
    int s;
    cargar( &s );
    imprimir( s );
    getch();
    return 0;
}
//---------------------------------------------------------------------------
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
constructor con parámetros que son funciones robinsongm C++ Builder 4 13-04-2011 11:41:53
parámetros en funciones RGB y HSL Norum Gráficos 5 12-02-2008 18:49:43
Transferencia lenta entre HDD ATA y HDD SATA Sergio J. Varios 1 22-04-2005 18:30:16
Funciones por parametros... omar_e_rc Varios 2 28-03-2005 00:12:27
Funciones y parámetros Fast Report sur-se Impresión 1 18-08-2004 13:38:44


La franja horaria es GMT +2. Ahora son las 06:06:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi