Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Funcion que retorna valor erroneo

Estas en el tema de Funcion que retorna valor erroneo en el foro de C/C++ en Foros del Web. Hola! Soy nuevo en el foro, pero eso no implica que no sepa programar! anteriormente hacia un lenguaje "algo parecido" al c, llamado Jass, era ...
  #1 (permalink)  
Antiguo 13/03/2014, 10:09
 
Fecha de Ingreso: marzo-2014
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Funcion que retorna valor erroneo

Hola!
Soy nuevo en el foro, pero eso no implica que no sepa programar!
anteriormente hacia un lenguaje "algo parecido" al c, llamado Jass, era un MOD de un juego llamado Warcraft 3.

El caso, es que queria poner en practica mis conocimientos, y bueno, he empezado con algo sencillo, la funcion es la siguiente:

Código PHP:
int SUMAR(int a,int b,int c){
    
b;
    return 
c;
}


int main(){


int a,b,c;
printf("Escribe tus valores:\n\n");
scanf("%d",&a);
scanf("%d",&b);

SUMAR(a,b,c);
printf("%d",c);

getch();
return 
0;

Lo que quiero que haga es sencillo, el usuario escribe 2 numeros, y este, en la otra funcion SUMAR los suma
y luego devuelve el resultado en una variable C, al main.

Pero al ejecutar el programa, le de los valores que le tenga que dar, estos siempre van a ser 2!

porquee? DD:

Antes que nada, aclarar que he empezado hace 2 dias aventurandome en el maravilloso mundo del c++, y que, espero aprender mucho mas. Pero esta duda de "noob", me esta matando. :S
Por cierto, teneis algun orden por el que pueda ir aprendiendo conocimientos nuevos?

ya tengo bien vistos(o eso me parece) los loops, variables(int,char.....) y el printf/cout y el scanf/cin. No se por donde continuar por mi cuenta :S

desde ya, muchas gracias! y espero que podais resolver mi duda
  #2 (permalink)  
Antiguo 13/03/2014, 10:26
Avatar de TSG
TSG
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 373
Antigüedad: 10 años, 7 meses
Puntos: 9
Respuesta: Funcion que retorna valor erroneo

Hola muy buenas,

Puedes probar con esto:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <conio.h>
  3.  
  4. using namespace std;
  5.  
  6. //Declaramos unas variables
  7. int num1, num2;
  8. int resultado;
  9.  
  10. void suma()
  11. {
  12.     //Le damos a la variable resultado el valor del numero 1 y numero 2 sumado.
  13.     resultado = num1 + num2;
  14.     //Mostramos el resultado.
  15.     cout << "\nEl resultado de los dos numeros ingresados es: " << resultado << endl;
  16. }
  17.  
  18. int main()
  19. {
  20.     //Le pedimos que ingrese el primer valor.
  21.     cout << "Introduce el primer valor: ";
  22.     //Guardamos el numero ingresado en la variable num1
  23.     cin >> num1;
  24.     //Le pedimos que ingrese el segundo valor.
  25.     cout << "Introduce el segundo valor: ";
  26.     //Guardamos el numero ingresado en la variable num2
  27.     cin >> num2;
  28.     //Mostramos el resultado de los dos numeros sumados
  29.     suma();
  30.    
  31.     getch();
  32.     return 0;
  33. }
  #3 (permalink)  
Antiguo 13/03/2014, 10:34
 
Fecha de Ingreso: marzo-2014
Mensajes: 5
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Funcion que retorna valor erroneo

Buenas!

Estás llamando a la función que devuelve un int, sin asignarselo a nadie, ese es el error.

Probá declarando la función sólo con dos parametros, y luego:
c = SUMAR(a,b);
  #4 (permalink)  
Antiguo 13/03/2014, 10:43
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Funcion que retorna valor erroneo

Hola que tal bienvenido al foro yo tambien estoy empezando como tu, lo mejor que hecho para adquirir conocimientos es leer mucho actualmente estoy leyendo aprendiendo C en 21 dias de Peter Aitket, ok ahora con los detalles que observe en tu codigo y con las observaciones de como lo haria yo xD:

1- Declaras 3 parametros en tu función.
Código:
(int a,int b,int c)
, y solo pasas 2 argumentos, el cual es el valor de a y b, la variable c no tiene ningun valor cuando la pasas a la función.
2- Las funciones son independientes asi que cuando regresan a main el dato guardado en la variable es basura asi que se debe declarar una variable dentro del main para que guarde el retorno de la operación.
3- Si quieres que sume n elementos podrias hacer una funcion con un argumento tipo void y que retorne un valor entero o decimal te dejo los ejemplos

Sumar 2 elementos:

Código:
#include <stdio.h>
#include <conio.h>

int SUMAR(int a,int b){
   a + b;
    return a+b;
}


int main(){


int a,b,sum;
printf("Escribe tus valores:\n\n");
scanf("%d",&a);
scanf("%d",&b);

sum=SUMAR(a,b);
printf("%d",sum);

getch();
return 0;
}
Y este es el codigo para sumar dentro de la funcion y llamar a la funcion desde main
Código:
#include <stdio.h>
#include <conio.h>

int SUMA(void){
    int n,i,acum,n1;
    acum=0;
 
 printf("Cuantos elementos desea sumar ");
   scanf("%d",&n);
   for (i=1;i<=n;i++)
   {
       scanf("%d",&n1);
       acum+=n1;
       }
   printf("Resultado en funcion %d\n",acum);
   return acum;
}


int main(){
    int s;
s=SUMA();
printf("resultado en main %d\n",s);

getch();
return 0;
}
Saludos .
  #5 (permalink)  
Antiguo 13/03/2014, 10:52
 
Fecha de Ingreso: marzo-2014
Mensajes: 9
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Funcion que retorna valor erroneo

Cita:
Iniciado por TSG Ver Mensaje
Hola muy buenas,

Puedes probar con esto:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <conio.h>
  3.  
  4. using namespace std;
  5.  
  6. //Declaramos unas variables
  7. int num1, num2;
  8. int resultado;
  9.  
  10. void suma()
  11. {
  12.     //Le damos a la variable resultado el valor del numero 1 y numero 2 sumado.
  13.     resultado = num1 + num2;
  14.     //Mostramos el resultado.
  15.     cout << "\nEl resultado de los dos numeros ingresados es: " << resultado << endl;
  16. }
  17.  
  18. int main()
  19. {
  20.     //Le pedimos que ingrese el primer valor.
  21.     cout << "Introduce el primer valor: ";
  22.     //Guardamos el numero ingresado en la variable num1
  23.     cin >> num1;
  24.     //Le pedimos que ingrese el segundo valor.
  25.     cout << "Introduce el segundo valor: ";
  26.     //Guardamos el numero ingresado en la variable num2
  27.     cin >> num2;
  28.     //Mostramos el resultado de los dos numeros sumados
  29.     suma();
  30.    
  31.     getch();
  32.     return 0;
  33. }
Gracias, pero tus funciones no cojen valores, y mucho menos lo devuelven. Lo que hace sencillamente es cojer los valores ya declarados fuera de la funcion, y llamarlos. Seria como hacerlo todo en una misma funcion

MARINXSALVO
gracias, lo deje tal cual:
Código PHP:
int SUMAR(int a,int b){
    return 
a+b;
}


int main(){
int a,b,c;
printf("Escribe tus valores:\n\n");
scanf("%d",&a);
scanf("%d",&b);

SUMAR(a,b);
printf("%d",c);

getch();
return 
0;

no sabia que se tenia que declarar la funcion que vayas a llamar en la variable main

por cierto, sabeis que cosas pordria ir aprendiendo? Esto se me hace un poco facil a estas alturas

gracias!
  #6 (permalink)  
Antiguo 13/03/2014, 11:40
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Funcion que retorna valor erroneo

http://www.minidosis.org/#/
Cuando termine con eso sera dentro de año y medio XDDD
Entonces me preguntas mas XDDD
  #7 (permalink)  
Antiguo 13/03/2014, 11:50
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Funcion que retorna valor erroneo

Podes ir viendo algo de entrada y salida de archivos, fread, fwrite, fopen, etc. Aunque no se como es ese tema en C++, yo te hablo de C. Por cierto fijate que las funciones siguen un estilo, toma uno y seguilo. Si SUMAR esta escrito en mayusculas, pues tu proxima funcion escribela así, por ejemplo, RESTAR, o MULTIPLICAR (aunque mejor usa minusculas con guiones bajos para separar las palabras). Asi vas aprendiendo el estilo desde un principio que es algo bastante importante.


Etiquetas: erroneo, funcion, int, numero, programa, retorna, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:01.