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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ejercicio, Programación Orientada a Objetos.. URGENTEE!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio, Programación Orientada a Objetos.. URGENTEE!!  (Leído 1,421 veces)
LauraD

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Ejercicio, Programación Orientada a Objetos.. URGENTEE!!
« en: 9 Septiembre 2014, 02:19 am »

Buenas noches!

Tengo que eleborar un algoritmo en el que se convierta un número decimal en un número binario... Al realizar la programación estructurada del problema me compila y ejecuta muy bien, pero en el momento en el que pase todo a orientada al momento de ejecutar me muestra errores..

Por favor podrian decirme que es lo que esta fallando, se los agradeceria mucho!

Este es el código..

Código
  1. //6.Programa que pase un decimal a binario
  2.  
  3. #include<iostream>
  4. #include<cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. class Decimal
  9. {
  10.  
  11.  private:
  12.  int i,j;
  13.  int Num,Num2;
  14.  int Res;
  15.  int Vec[10];
  16.  
  17.  
  18.  public:
  19.  void Leer(void);
  20.  void Proceso(void);
  21.  void Imprimir(void);
  22.  };
  23.  
  24.  void Decimal::Leer(void)
  25.  {
  26.       cout<<"Ingrese el numero del que desea conocer su equivalencia en binario"<<endl;
  27.       cin>>Num;
  28.       Num2=Num;
  29.  }
  30.  
  31.  void Decimal::Proceso(void)
  32.  {
  33.         for(i=1;i<=Num;i++)
  34.          {
  35.            Num2=Num2/2;
  36.  
  37.            if(Num2==1)
  38.            {
  39.              break;
  40.            }
  41.          }
  42.  
  43.          for(j=1;j<=i;j++)
  44.          {
  45.             Res=Num%2;
  46.  
  47.             if(Res==1)
  48.             {
  49.               Vec[j]=1;
  50.             }
  51.  
  52.             else
  53.             {
  54.                if(Res==0)
  55.                {
  56.                   Vec[j]=0;
  57.                   Num=Num/2;
  58.                }
  59.             }
  60.          }
  61.       }
  62.  
  63.  
  64. void Decimal::Imprimir(void)      
  65. {
  66.     if(Num==0 || Num==1)
  67.     {
  68.       cout<<"El numero ingresado en binario es "<<Num<<endl;
  69.     }
  70.  
  71.     else
  72.     {
  73.       cout<<"El numero "<<Num<<" en binario es:"<<endl;
  74.  
  75.       cout<<"1";
  76.  
  77.       for(j=i;j>0;j--)
  78.       {
  79.         cout<<Vec[j];
  80.       }
  81.     }
  82. }
  83.  
  84. int main ()
  85. {
  86. Decimal Binario;
  87. Binario.Leer();
  88. Binario.Proceso();
  89. Binario.Imprimir();
  90.  
  91. system ("PAUSE");
  92. return EXIT_SUCCESS;
  93. }
  94.  


En línea

kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Ejercicio, Programación Orientada a Objetos.. URGENTEE!!
« Respuesta #1 en: 9 Septiembre 2014, 06:00 am »

pero en el momento en el que pase todo a orientada al momento de ejecutar me muestra errores..

La función Proceso la puedes simplificar bastante no hay necesidad de complicarse por algo tan simple :

Código
  1. void Decimal::Proceso(void)
  2. {
  3.    for(i = 0; num; i++)
  4.    {
  5.        res = num % 2;
  6.        vec[i] = res;
  7.        num = num / 2;
  8.    }
  9. }
  10.  

Y con la función Imprimir de igual manera :

Código
  1. void Decimal::Imprimir(void)
  2. {
  3.    cout << "El numero " << num << " en binario es: ";
  4.    for (j = i - 1; j >= 0; j--)
  5.       cout << vec[j];
  6. }

Saludos kutcher


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ejercicio, Programación Orientada a Objetos.. URGENTEE!!
« Respuesta #2 en: 9 Septiembre 2014, 08:44 am »

Aparte de lo comentado por kutcher te pongo un par de comentarios adicionales:

* Las variables i, j, Num2 y Res deberían ser variables locales definidas en funciones y no en el cuerpo de la clase, ya que únicamente las usas para calcular resultados parciales.

* Para almacenar la secuencia binaria puedes usar la clase "string" o la clase "vector".

* A diferencia de C, en C++ no es necesario poner "void" en las funciones que no reciben argumentos.

* Si se llama a "Imprimir" sin llamar antes a "Leer" vas a imprimir basura. Para evitar eso necesitas hacer uso del constructor por defecto. El constructor se llama automáticamente al crear el objeto, por lo que es un lugar ideal para inicializar las variables de la clase.

Código
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. class Decimal
  7. {
  8.  private:
  9.    int numeroDecimal;
  10.    std::string numeroBinario;
  11.  
  12.  public:
  13.  
  14.    // Constructor por defecto
  15.    Decimal( );
  16.  
  17.    void Leer();
  18.    void Proceso();
  19.    void Imprimir();
  20. };
  21.  
  22. // Implementación del constructor por defecto.
  23. Decimal::Decimal( )
  24. {
  25.  numeroDecimal = 0;
  26. }
  27.  
  28. void Decimal::Leer()
  29. {
  30.  cout<<"Ingrese el numero del que desea conocer su equivalencia en binario"<<endl;
  31.  cin>>numeroDecimal;
  32. }
  33.  
  34. void Decimal::Proceso()
  35. {
  36.  int numero = numeroDecimal;
  37.  
  38.  if ( numero == 0 )
  39.    numeroBinario = "0";
  40.  
  41.  while ( numero )
  42.  {
  43.    int digito = numero % 2;
  44.    numero /= 2;
  45.  
  46.    // Los nuevos valores los vamos añadiendo al inicio de la cadena para que la impresión del
  47.    // resultado sea más sencilla.
  48.    numeroBinario.insert( 0, 1, '0' + digito );
  49.  }
  50. }
  51.  
  52. void Decimal::Imprimir()
  53. {
  54.  cout<<"El numero "<< numeroDecimal <<" en binario es: " << numeroBinario << endl;
  55. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programacion orientada a objetos en php, ide
PHP
wizache 2 4,461 Último mensaje 11 Marzo 2008, 02:44 am
por [ Alberto]
programacion orientada a objetos con C#
.NET (C#, VB.NET, ASP)
Bleach@lex 3 4,956 Último mensaje 21 Abril 2012, 19:55 pm
por Bleach@lex
Programacion orientada a objetos
Programación C/C++
cazagavilan 4 3,402 Último mensaje 21 Abril 2012, 10:55 am
por cazagavilan
Programacion orientada a objetos
Programación C/C++
edwinabril1992 2 2,251 Último mensaje 9 Octubre 2013, 08:47 am
por eferion
Programacion orientada a objetos
Programación C/C++
edwinabril1992 2 2,550 Último mensaje 11 Octubre 2013, 09:24 am
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines