DEV C++ 2+2 NO ES 4 ¬¬ (Resuelto)

Iniciado por vangodp, 20 Marzo 2013, 04:17 AM

0 Miembros y 1 Visitante están viendo este tema.

vangodp

Hola compaeros!
La verdad es la primera vez que escribo en el foro, no por interes sino por ser un leigo en el tema de la programacion.
Eh decidido poner mano a la maza y aprender c++, me va bastante bien de momento excepto por un problema que no se que es y me preguntava si alguien con mejores luces y conocimientos que yo me puede decir el por que dev dice que 2+2 no es 4 y ya me estoy desesperando.
Segun el libro que estoy leendo todo esta bien, de echo el programa corre perfecto sin avisos de error.

pero creo que el error esta en la linea: int suma = num1 + num2;
Como dije segun el libro es perfectamente legal hacer esto pero ya no se que penzar.
Echen una mirada al codigo, es de lo mas extraño que vi, segun dev c++ si pongo 2+2 me dice que es 0 :/

#include <iostream>
#include <stdlib.h>


using namespace std;

int main ()
{

    int num1;
    int num2;

    int suma = num1 + num2; //creo que el problema esta aqui :(


    cout << "Introduce el primer numero\n"<<endl;
    cin >> num1;

    cout << "Introduce el segundo numero\n"<<endl;
    cin >> num2;

    cout << "El resultados es: " << suma << "\n" <<endl; //al invocar suma a mi no me sale por ejempo 2+2 me dice que es 0 :/

    system ("pause");
    return 0;
}



De esta manera funciona pero no puedo asignar el resultado a una variablecomo el codigo de arriba??

#include <iostream>
#include <stdlib.h>


using namespace std;

int main ()
{

    int num1;
    int num2;


    cout << "Introduce el primer numero\n"<<endl;
    cin >> num1;

    cout << "Introduce el segundo numero\n"<<endl;
    cin >> num2;

    cout << "El resultados es: " << num1+num2 << "\n" <<endl; // si le hago asi si me funciona pero entonces
                                                              //no puedo trabajar con el resultado de la suma

    system ("pause");
    return 0;
}



ayuuudaaaa no se que hacer :(((
Ya probe reinstalar el dev y ya lo probe en 3 PCs y me dice lo mismo.
Desde ya gracias a todos y suerte en esta gran comunidad que es el hacker ;)) ;-)

Karcrack

El problema es que calculas la suma antes de leer el resultado.
Las variables num1 y num2 obtienen valor en las lineas: cin >> num1; y cin >> num2;. Y tú haces la suma antes.

La forma correcta de hacerlo es así:
Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>


using namespace std;

int main ()
{

     int num1;
     int num2;

     int suma;


     cout << "Introduce el primer numero\n"<<endl;
     cin >> num1;

     cout << "Introduce el segundo numero\n"<<endl;
     cin >> num2;

     suma = num1 + num2;

     cout << "El resultados es: " << suma << "\n" <<endl; //al invocar suma a mi no me sale por ejempo 2+2 me dice que es 0 :/

     system ("pause");
     return 0;
}

vangodp

Cita de: Karcrack en 20 Marzo 2013, 04:23 AM
El problema es que calculas la suma antes de leer el resultado.
Las variables num1 y num2 obtienen valor en las lineas: cin >> num1; y cin >> num2;. Y tú haces la suma antes.

La forma correcta de hacerlo es así:
Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>


using namespace std;

int main ()
{

     int num1;
     int num2;

     int suma;


     cout << "Introduce el primer numero\n"<<endl;
     cin >> num1;

     cout << "Introduce el segundo numero\n"<<endl;
     cin >> num2;

     suma = num1 + num2;

     cout << "El resultados es: " << suma << "\n" <<endl; //al invocar suma a mi no me sale por ejempo 2+2 me dice que es 0 :/

     system ("pause");
     return 0;
}




gracias amigo ere un artista, ni me dio tiempo de hacer un café :DD

zonahurbana

Cita de: vangodp en 20 Marzo 2013, 04:17 AM
segun dev c++ si pongo 2+2 me dice que es 0 :/
Ya verás que no jeje.

#include <iostream>
#include <stdlib.h>
using namespace std;

int main ()
{
    int num1;
    int num2;

    int suma = num1 + num2; //creo que el problema esta aqui :(


    cout << "Introduce el primer numero\n"<<endl;
    cin >> num1;

    cout << "Introduce el segundo numero\n"<<endl;
    cin >> num2;

    cout << "El resultados es: " << suma << "\n" <<endl;

    system ("pause"); return 0;
}


Cuando escribes int num1; int num2;
Estás declarando y definiendo dos variables de tipo entero, pero, como no las inicializas, su contenido es basura. Es decir, van a poder contener lo que sea que fuere.
Luego declaras una variable suma, e intentas inicializarla con el valor de num1+num2. Pero estos no fueron inicializados...
Me parece que aquí debió de advertirte de ese error. Aunque, talvés DevC++ los considera inicializados con 0.

Si no deseas mostrar el resultado como cout<<num1+num2; (como en el segundo programa que citas) y prefieres usar de intermediario la variable suma, puedes hacerlo. Pero... debes hacerlo luego que num1 y num2 tienen sus valores respectivos (es decir, luego de haberlos leído usando cin).

Saludos.
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

vangodp

Cita de: zonahurbana en 20 Marzo 2013, 04:28 AM
Ya verás que no jeje.

#include <iostream>
#include <stdlib.h>
using namespace std;

int main ()
{
     int num1;
     int num2;

     int suma = num1 + num2; //creo que el problema esta aqui :(


     cout << "Introduce el primer numero\n"<<endl;
     cin >> num1;

     cout << "Introduce el segundo numero\n"<<endl;
     cin >> num2;

     cout << "El resultados es: " << suma << "\n" <<endl;

     system ("pause"); return 0;
}


Cuando escribes int num1; int num2;
Estás declarando y definiendo dos variables de tipo entero, pero, como no las inicializas, su contenido es basura. Es decir, van a poder contener lo que sea que fuere.
Luego declaras una variable suma, e intentas inicializarla con el valor de num1+num2. Pero estos no fueron inicializados...
Me parece que aquí debió de advertirte de ese error. Aunque, talvés DevC++ los considera inicializados con 0.

Si no deseas mostrar el resultado como cout<<num1+num2; (como en el según programa que citas) y prefieres usar de intermediario la variable suma, puedes hacerlo. Pero... debes hacerlo luego que num1 y num2 tienen sus valores respectivos (es decir, luego de haberlos leído usando cin).

Saludos.


si muchas gracias lo havia leido tambien que hay que poner un valor inicial pero no me dava cierto tampoco, por que el error era este que me comentas que le debo asignarle el valor a suma despues de tener los valores, se me escapo :DD