Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/07/2013, 18:09
ambigus
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 16 años, 3 meses
Puntos: 1
Programación Orientada en Objetos de C++

El objetivo es pasar este código a un formato de Programación Orientada a Objetos


Código Estructural:
Código C++:
Ver original
  1. #include "stdafx.h"
  2. #include "iostream"
  3. #include <conio.h>
  4. using namespace System;
  5. using namespace std;
  6. struct nodo
  7. {
  8.     int datos;
  9.     nodo *sig;
  10. };
  11. nodo *inicial=NULL;
  12. void leer_nodo(nodo *nuevo) // Método - Leer nodo
  13. {
  14.     cout<<"Entre valor del nodo"<<endl; // Permite ingresar la cantidad de Nodos
  15.     cin>>nuevo->datos;
  16. }
  17. void crear_lista(nodo *anterior, nodo *nuevo)
  18. {
  19.     if(anterior == NULL)
  20.     {
  21.         nuevo->sig = inicial;
  22.         leer_nodo(nuevo); // Lee 1ra vez
  23.         inicial = nuevo;
  24.     }
  25.     else
  26.     {
  27.         nuevo->sig = anterior->sig;
  28.         anterior->sig = nuevo;
  29.         leer_nodo(nuevo); // Lee N vez
  30.     }
  31. }
  32. void imprime_nodo(nodo *apun) // Cambio
  33. {
  34.     cout<<"El valor es :    "<<apun->datos<<endl;
  35. }
  36. void reco_iter(nodo *apun) // Cambio
  37. {
  38.     while(apun != NULL)
  39.     {
  40.         imprime_nodo(apun); // Imprime valor nodo
  41.         apun = apun->sig;
  42.     }
  43.     getch();
  44. }
  45. void borrar_lista(nodo *apun)
  46. {
  47.     nodo *inicial;
  48.     while(apun != NULL)
  49.     {
  50.         inicial=apun->sig;
  51.         delete apun;
  52.         apun=inicial;
  53.     }
  54. }
  55. void main()
  56. {
  57.     nodo *anterior, *nuevo, *apun; // Cambio -> apun
  58.     char resp;
  59.     anterior=NULL;
  60.     do
  61.     {
  62.         nuevo = new nodo;
  63.         crear_lista(anterior, nuevo);
  64.         anterior = nuevo;
  65.         cout<<"Desea crear otro nodo? (s/n) "<<endl;
  66.         cin>>resp;
  67.         resp=tolower(resp);
  68.     }while(resp != 'n');
  69.     //inicio del recorrido de la lista
  70.     apun = inicial;
  71.     reco_iter(apun);
  72.     borrar_lista(inicial) ;
  73. }



Código en Objetos con ERROR

Código C++:
Ver original
  1. #include "stdafx.h"
  2. #include "iostream"
  3. #include <conio.h>
  4. using namespace System;
  5. using namespace std;
  6. struct nodo
  7. {
  8.     int datos;
  9.     nodo *sig;
  10.    
  11. };
  12. class lista // Nueva clase - Lista
  13. {
  14. private:
  15.     nodo *inicial;
  16. public:
  17.     lista();   // La lista  - Publico
  18.     ~lista();  // ~La lista - Publico
  19.    
  20.     void crear_lista(nodo *anterior, nodo *nuevo); // Metodo "crear_lista" - Publico
  21.     void leer_nodo(nodo *nuevo); // Método - Leer nodo
  22.     void imprime_nodo(nodo *apun); // Cambio
  23.     void reco_iter(nodo *apun); // Cambio
  24.     void borrar_lista(nodo *inicial) ;
  25. };
  26. lista::lista()
  27. {
  28.     inicial=NULL; // Inicializa NULL
  29. }
  30. void lista::leer_nodo(nodo *nuevo) // Método - Leer nodo
  31. {
  32.     cout<<"Entre valor del nodo"<<endl; // Permite ingresar la cantidad de Nodos
  33.     cin>>nuevo->datos;
  34. }
  35. void lista::crear_lista(nodo *anterior, nodo *nuevo)
  36. {
  37.     if(anterior == NULL)
  38.     {
  39.         nuevo->sig = inicial;
  40.         leer_nodo(nuevo); // Lee 1ra vez
  41.         inicial = nuevo;
  42.     }
  43.     else
  44.     {
  45.         nuevo->sig = anterior->sig;
  46.         anterior->sig = nuevo;
  47.         leer_nodo(nuevo); // Lee N vez
  48.     }
  49. }
  50. void lista::imprime_nodo(nodo *apun) // Cambio
  51. {
  52.     cout<<"El valor es :    "<<apun->datos<<endl;
  53. }
  54. void lista::reco_iter(nodo *apun) // Cambio
  55. {
  56.     while(apun != NULL)
  57.     {
  58.         imprime_nodo(apun); // Imprime valor nodo
  59.         apun = apun->sig;
  60.     }
  61. }
  62. lista::~lista() // Metodo "borrar_lista" - Publico
  63. {
  64.     nodo *apun; // " * " es para crear nodo
  65.     apun=inicial;
  66.     while(apun != NULL)
  67.     {
  68.         cout<<"borro"<<endl;
  69.         inicial=apun->sig;
  70.         delete apun;
  71.         apun=inicial;
  72.     }
  73. }
  74. void main()
  75. {
  76.     nodo *anterior, *nuevo, *apun;
  77.     lista objlista; // Dar memoria a la lista
  78.     char resp;
  79.     anterior=NULL;
  80.     do
  81.     {
  82.         nuevo = new nodo;
  83.         objlista.crear_lista(anterior, nuevo); // Nuevo metodo
  84.         anterior = nuevo;
  85.         cout<<"Desea crear otro nodo? (s/n) "<<endl;
  86.         cin>>resp ; resp=tolower(resp);
  87.     }while (resp != 'n');
  88.     //inicio del recorrido de la lista
  89.     apun = inicial;
  90.     objlista.reco_iter(apun);
  91.     objlista.borrar_lista(inicial) ;
  92. }

¿Cuál es el error en esta compilación?