Ayuda con este problema en C++ (Utilizando Visual Studio 12')

Iniciado por UV09, 14 Julio 2013, 18:40 PM

0 Miembros y 2 Visitantes están viendo este tema.

αиσиyмσυรCร

Cita de: SrCooper en 14 Julio 2013, 23:40 PM
En realidad las funciones que tu utilizas también se puden utilizar en C++, solo que es más efectivo utilizar la librería iostream y las funciones cout y cin.

Un saludo

"El fin justifica los medios" como decía Maquiavelo da igual como lo hagas el caso es que hace la misma función y sin errores :P

Un saludo αиσиyмσυรCร

UV09

#include "stdafx.h"
#include "iostream"

using namespace System;
using namespace std;

class PROCESOS
{
private: int a, b, r;
public:
    void asignar1(int y)
    {
        a = x;
    }
    void asignar2(int z)
    {
        b = y;
    }
    void suma()
    {
        r = a + b;
        cout<<"La suma de " <<a <<" y " <<b <<" es " <<r <<"\n";
    }
    void resta()
    {
        r = a - b;
        cout<<"La resta de " <<a <<" y " <<b <<" es " <<r <<"\n";
    }
    void multi()
    {
        r = a * b;
        cout<<"La multiplicacion de " <<a <<" y " <<b <<" es " <<r <<"\n";
    }
    void div()
    {
        if (b != 0)
        {
            r = a / b;
            cout<<"La divicion de " <<a <<" y " <<b <<" es " <<r <<"\n";
        }
        else
        {
            cout<<"ERROR :(" <<"\n";
            cout<<"No existe la divicion por " <<b <<"\n";
        }
    }

};
int main(array<System::String ^> ^args)
{
    int j, k;
    PROCESOS objFUN;
    cout<<"Introduce 2 numeros\n";
    cin>>j;
    cin>>k;
    objFUN.asignar1(j);
    objFUN.asignar2(k);
    objFUN.suma();
    objFUN.resta();
    objFUN.multi();
    objFUN.div();
    system("PAUSE");
    return 0;
}

eferion

#12
Por lo que he visto en tu código, la variable r no tiene razón de ser.

Es una variable que guarda un resultado temporal que no tiene sentido más allá de la función en la que defines su valor. Es decir, si haces una suma, en r guardas el resultado... pero ese resultado no se vuelve a usar para nada... en cuanto hagas otra operación, ese valor se pierde y nadie va a suspirar por el.

En estos casos es mejor reducir su ámbito de uso y declarar variables dentro de las funciones que las necesiten.

Saber declarar cada variable dentro de un ámbito correcto es bastante importante, aunque eso es algo que irás aprendiendo con el tiempo.

Además te faltaría definir el constructor de la clase. ¿ Qué sucede si se te olvida llamar a asignar1 y/o asignar2 antes de realizar alguna operacion? Pruébalo, verás que los resultados serán raros raros. Los constructores te ayudan a evitar ese tipo de problemas.

La declaración que haces del main es un poco rara... es una sintaxis propia del visual studio 12???

Dicho lo dicho, yo dejaría tu código así:

Código (cpp) [Seleccionar]

#include "stdafx.h"
#include "iostream"

using namespace System;
using namespace std;

class PROCESOS
{
private:
   int a, b;
public:

    PROCESOS( )
    {
      a = 0;
      b = 0;
    }

   void asignar1(int y)
   {
       a = x;
   }
   void asignar2(int z)
   {
       b = y;
   }
   void suma()
   {
       int r = a + b;
       cout<<"La suma de " <<a <<" y " <<b <<" es " <<r <<"\n";
   }
   void resta()
   {
       int r = a - b;
       cout<<"La resta de " <<a <<" y " <<b <<" es " <<r <<"\n";
   }
   void multi()
   {
       int r = a * b;
       cout<<"La multiplicacion de " <<a <<" y " <<b <<" es " <<r <<"\n";
   }
   void div()
   {
       if (b != 0)
       {
           int r = a / b;
           cout<<"La divicion de " <<a <<" y " <<b <<" es " <<r <<"\n";
       }
       else
       {
           cout<<"ERROR :(" <<"\n";
           cout<<"No existe la divicion por " <<b <<"\n";
       }
   }

};
int main(array<System::String ^> ^args)
{
   int j, k;
   PROCESOS objFUN;
   cout<<"Introduce 2 numeros\n";
   cin>>j;
   cin>>k;
   objFUN.asignar1(j);
   objFUN.asignar2(k);
   objFUN.suma();
   objFUN.resta();
   objFUN.multi();
   objFUN.div();
   system("PAUSE");
   return 0;
}

0xDani

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

z3nth10n

Ale, he aquí mi code ;D

Código (cpp) [Seleccionar]
#include <iostream>
#include <conio.h>

using namespace std;

main(){

float x, y;
float suma, resta, multiplicacion, division;

cout << "Introduzca el primer numero: ";
cin >> x;
cout << "Introduzca el segundo numero: ";
cin >> y;

suma=x+y;
resta=x-y;
multiplicacion=x*y;
division=x/y;

cout << "La suma es: " << suma << endl;
getch();
cout << "La resta es: " << resta << endl;
getch();
cout << "La multiplicacion es: " << multiplicacion << endl;
getch();
cout << "La division es: " << division << endl;
getch();

return 0;

}


Ya se que me he saltado las reglas del: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html (Punto 4)

Pero me la pela un poco xD >:D
PD: Estoy aprendiendo C++ gracias a estas dudas yo tmb aprendo.
PDS: El code es un remix de todos los vuestros xD

Interesados hablad por Discord.