FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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) { ... Código:
int imprimir(int a[], int b[], int c[]) { ...
__________________
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. |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
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; } 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; } 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. |
#5
|
|||
|
|||
Hola ecfisa otra vez gracias!!
Acá arme un pedacito de código, la verdad que no lo puedo hacer andar.
Muchas gracias!!!! |
#6
|
||||
|
||||
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; }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
|||
|
|||
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) { ... } Ejem. Código:
Void MiFuncion(int &s){ ... } 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; } 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. |
#8
|
|||
|
|||
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! |
#9
|
|||
|
|||
Hola cero, quise probar tu ejemplo, pero no lo pude compilar me da error.
Saludos! |
#10
|
|||
|
|||
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; } |
#11
|
|||
|
|||
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; } //--------------------------------------------------------------------------- |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
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 |
|