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

Duda con declaracion de variables.

Estas en el tema de Duda con declaracion de variables. en el foro de C/C++ en Foros del Web. Muy buenas. Me llamos Jesus, de Sevilla, viviendo en Colombia. Este es mi primer post. Estoy aprendiendo C++ por mi cuenta y espero poder molestarles ...
  #1 (permalink)  
Antiguo 28/03/2011, 09:17
Avatar de jesusramos78  
Fecha de Ingreso: febrero-2011
Ubicación: Medellin
Mensajes: 8
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Duda con declaracion de variables.

Muy buenas. Me llamos Jesus, de Sevilla, viviendo en Colombia. Este es mi primer post. Estoy aprendiendo C++ por mi cuenta y espero poder molestarles para aclarar las duditas que me surjan. Gracias de antemano.

Tengo el siguiente codigo:
Código C++:
Ver original
  1. /*Definir una estructura para numeros
  2. complejos y sus operaciones */
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. struct complex
  8. {
  9.     double real, imag;
  10. };
  11.  
  12. //Declaracion de la funcion suma
  13. complex suma_complex (complex a, complex b);
  14.  
  15. //programa principal
  16. int main (void)
  17. {
  18.     complex c1, c2, c;
  19.     cout<<"Primer numero"<<endl;
  20.     cout<<"parte real: "<<endl;
  21.     cin>>c1.real;
  22.     cout<<"parte imaginaria: "<<endl    ;
  23.     cin>>c1.imag;
  24.     cout<<"Segundo numero"<<endl;
  25.     cout<<"parte real"<<endl;
  26.     cin>>c2.real;
  27.     cout<<"parte imaginaria"<<endl;
  28.     cin>>c2.imag;
  29.     c = suma_complex(c1, c2);                                 //inclusion de la funcion suma_complex en main
  30.     cout<<"Suma compleja = "<<c.real<<" + "<<c.imag<<endl;    //salida por pantalla del resultado
  31.     cin>>c.imag;
  32.     return 0;
  33. }
  34.  
  35. //Definicion de la funcion suma
  36. complex suma_complex (complex a, complex b)
  37. {
  38. complex c;
  39. c.real = a.real + b.real;
  40. c.imag = a.imag + b.imag;
  41. return c;
  42. }

Mis dudas son:
1) Si ya declare la variable complex c en la funcion main, tengo que declararla de nuevo en la funcion suma_complex?
2)Como hago para que la salida por pantalla o el almacenamiento de datos en a.imag y b.imag me salgan como decimales y asi poder sumarlos para que me de el numero completo que estoy buscando.
3) De que me sirve igualar c a la funcion suma_complex en la funcion main? Solo con incluir la funcion me deberia de dar el mismo resultado o no?
4) Lo ultimo, de que forma puedo pausar el programa para ver los resultados sin tener que utilizar, como hago, ese ultimo cin>>c.imag; que no viene al cuento.

Gracias y genial el foro.

Última edición por jesusramos78; 28/03/2011 a las 09:25 Razón: Se me olvido una pregunta
  #2 (permalink)  
Antiguo 28/03/2011, 10:18
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Duda con declaracion de variables.

Estas muy confundico el complex c de la funcion main y el complex c de la funcion suma son muy distintos. No tiene nada que ver uno con el otro. Cada uno pertenece al ambito local de cada funcion.

Para uqe quede como tu dices deberia declarar complex c afuera de cualquier funcion.

Dicho esto ahora si tiene sentido la asignacion en el main: c = suma_complex(c1, c2);


Los programas en c/c++ no se pueden pausear porque no son interpretados. Se compilan y corren. Existen algunos debugger que te permiten hacer lo que vos queres. Pero seguramente tienes el problema de windows que se cierra la ventana negra rapidamente.
Proba ejecutar el programa desde la consola. No haciendo doble click en el icono.
  #3 (permalink)  
Antiguo 29/03/2011, 01:28
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Duda con declaracion de variables.

Yo no te voy a dar todas las respuestas, pero te voy a guiar a encontrarlas

1) Mira la diferencia entre variables locales y globales
2) Mira los cast
3) Al llamar a la función, esta devuelve un valor, que lo tienes que recoger. En este caso, en la variable local c.
4) Hay funciones como sleep que pausan el programa, pero como te dijo el compañero, lo mejor es ejecutarlo desde la consola para que puedas ver los resultados.
  #4 (permalink)  
Antiguo 29/03/2011, 12:49
Avatar de jesusramos78  
Fecha de Ingreso: febrero-2011
Ubicación: Medellin
Mensajes: 8
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Duda con declaracion de variables.

Gracias por las respuestas.

Entonces lo de declarar c en ambas funciones como local es por ahorro de memoria?

Lo unico que no entendi de heimish2000 es que tiene que ver el cast ahi si no estoy convirtiendo nada, se queda igual q estaba como complex. Me gusto mucho esa manera de explicar, no me dices el porque si no que me dices como averiguarlo (nice).

Bueno espero seguir molestandolos mucho con mas preguntas. Eso querra decir que sigo aprendiendo.
  #5 (permalink)  
Antiguo 29/03/2011, 14:25
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Duda con declaracion de variables.

Porque decis que es por ahorro de memoria??? Es la forma de trabajar en C. Los variables locales solo son accesibles desde la funcion. Es mas varios llamados a una misma funcion va hacer que alla diferentes variables para cada una.

Puede parecer un ahorro de memoria pero mas que nada son dos forma distintas de utilizar la memoria. Las variables globales existen siempre. Las variables locales mientras la funcion no alla retornado.

Etiquetas: funcion, struct, variables
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 10:11.