elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  funciones paso por referencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: funciones paso por referencia  (Leído 2,803 veces)
vivianfes

Desconectado Desconectado

Mensajes: 17


Ver Perfil
funciones paso por referencia
« en: 3 Marzo 2015, 23:57 pm »

Citar
hola tengo dudas sobre el tema de funciones, en este ejercicio debo pedir al usuario que ingrese los digitos se debe calcular la suma y debe imprimir tambien el area de memoria
pero no me imprime la suma ni me deja leer los numeros al correr el programa, agradeceria su ayuda
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]) {
  4.  
  5. int var,a=0,b=0,c=0,resultado;
  6. printf(" a su direccion = %p\n",&a);
  7. printf(" b su direccion = %p\n",&b);
  8. printf(" c su direccion = %p\n",&c);
  9.  
  10.  
  11. a=(a,b,c,resultado);
  12. printf("El resultado de la suma es %d",a);
  13. }
  14. int suma(int a, int b,int c, int *resultado)
  15. {
  16.  
  17. scanf("%d",a);
  18. scanf("%d",b);
  19. scanf("%d",c);
  20. *resultado = a +b+c;
  21.  
  22.  
  23. return(*resultado);
  24. }
  25.  

Mod: post corregido, asegurate de seleccionar tu codigo antes de usar las GeSHi


« Última modificación: 4 Marzo 2015, 00:09 am por engel lex » En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: funciones paso por referencia
« Respuesta #1 en: 4 Marzo 2015, 00:10 am »

Aquí no llamas a ninguna función:
Código
  1. a=(a,b,c,resultado);
Sería:
Código
  1. a=suma(a,b,c,resultado);
Pero si tiene que recibir el resultado en la variable resultado no tienes que poner a=suma(), vale con:
Código
  1. suma(a,b,c,resultado);

Si vas a hacer scanf de a, b, y c dentro de la función, no tienes que pasar a, b,y c como parametros:
Código
  1. int suma(int *resultado)
  2. {
  3.   int a=0, b=0, c=0;
  4.   scanf("%d",a);
  5.   scanf("%d",b);
  6.   scanf("%d",c);
  7.   *resultado = a +b+c;
  8. }
Y vale con hacer:
Código
  1. printf("El resultado de la suma es %d", *resultado);


En línea

vivianfes

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: funciones paso por referencia
« Respuesta #2 en: 4 Marzo 2015, 00:27 am »

Aquí no llamas a ninguna función:
Código
  1. a=(a,b,c,resultado);
Sería:
Código
  1. a=suma(a,b,c,resultado);
Pero si tiene que recibir el resultado en la variable resultado no tienes que poner a=suma(), vale con:
Código
  1. suma(a,b,c,resultado);

Si vas a hacer scanf de a, b, y c dentro de la función, no tienes que pasar a, b,y c como parametros:
Código
  1. int suma(int *resultado)
  2. {
  3.   int a=0, b=0, c=0;
  4.   scanf("%d",a);
  5.   scanf("%d",b);
  6.   scanf("%d",c);
  7.   *resultado = a +b+c;
  8. }
Y vale con hacer:
Código
  1. printf("El resultado de la suma es %d", *resultado);

Aquí no llamas a ninguna función:
Código
  1. a=(a,b,c,resultado);
Sería:
Código
  1. a=suma(a,b,c,resultado);
Pero si tiene que recibir el resultado en la variable resultado no tienes que poner a=suma(), vale con:
Código
  1. suma(a,b,c,resultado);

Si vas a hacer scanf de a, b, y c dentro de la función, no tienes que pasar a, b,y c como parametros:
Código
  1. int suma(int *resultado)
  2. {
  3.   int a=0, b=0, c=0;
  4.   scanf("%d",a);
  5.   scanf("%d",b);
  6.   scanf("%d",c);
  7.   *resultado = a +b+c;
  8. }
Y vale con hacer:
Código
  1. printf("El resultado de la suma es %d", *resultado);

ok en todo caso tendria que dar el prototipo de la funcion suma no? ya que me marca error en
Código
  1. suma(a,b,c,resultado);
En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: funciones paso por referencia
« Respuesta #3 en: 4 Marzo 2015, 00:31 am »

Al final suma() solo tiene resultado como parametro, tienes que poner:
Código
  1. suma(resultado);
El prototipo sería:
Código
  1. void suma(int*);
Código
  1. void suma(int *resultado)
  2. {
  3.   int a=0, b=0, c=0;
  4.   scanf("%d",a);
  5.   scanf("%d",b);
  6.   scanf("%d",c);
  7.   *resultado = a +b+c;
  8. }
« Última modificación: 4 Marzo 2015, 00:34 am por T. Collins » En línea

vivianfes

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: funciones paso por referencia
« Respuesta #4 en: 4 Marzo 2015, 00:56 am »


 ya no me marco ningun error, te lo agradezco mucho, solo tengo otra duda al correrlo en la parte que leera los valores los ingreso y al darle enter me aparce un error de sistema y ya no lo deja correr, es por el programa? o en si por windows?
En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: funciones paso por referencia
« Respuesta #5 en: 4 Marzo 2015, 01:03 am »

Código
  1. void suma(int *resultado)
  2. {
  3.   int a=0, b=0, c=0;
  4.   scanf("%d",&a);
  5.   scanf("%d",&b);
  6.   scanf("%d",&c);
  7.   *resultado = a +b+c;
  8. }

A scanf hay que pasarle la dirección de las variables con &. Tienes que ir poco a poco, estás intentando hacer ejercicios de paso por referencia sin dominar cosas más básicas. Es mejor ser capaz de ver los errores de tu código e ir corrigiendolos por ti mismo, a que te lo den ya todo corregido.
En línea

vivianfes

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: funciones paso por referencia
« Respuesta #6 en: 4 Marzo 2015, 01:09 am »

)


A scanf hay que pasarle la dirección de las variables con &. Tienes que ir poco a poco, estás intentando hacer ejercicios de paso por referencia sin dominar cosas más básicas. Es mejor ser capaz de ver los errores de tu código e ir corrigiendolos por ti mismo, a que te lo den ya todo corregido.
eso no te lo niego la verdad es que funciones se me dificulta pero te agradezco mucho tu ayuda de verdad :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Paso de parametros por referencia...funciones
Programación C/C++
soser 2 4,573 Último mensaje 2 Septiembre 2010, 22:33 pm
por soser
paso por referencia de un integer
Java
kasiko 9 15,220 Último mensaje 24 Enero 2011, 06:26 am
por ChavalChavito
Paso por referencia
Java
mapers 8 5,425 Último mensaje 27 Julio 2011, 12:27 pm
por [Case]
Tipos de paso por referencia y paso por referencia de tipo apuntador
Programación C/C++
CATBro 3 3,503 Último mensaje 8 Abril 2012, 08:23 am
por Beakman
Paso de funciones a otras funciones
Programación C/C++
eaz95 1 2,484 Último mensaje 18 Julio 2017, 11:59 am
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines