Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/05/2015, 15:55
Deaniz
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años
Puntos: 0
Respuesta: Programacion C++, struct a clases

hola, buenas tardes, quisiera saber si me podrían ayudar,
hice un programa con struct, pero mi maestra al ultimo momento dijo que lo quería con clases, el problema es que no se como pasar mi programa a clases, alguien me podría orientar o ayudar porfavor?

Este es mi programa.

Código c++:
Ver original
  1. //****************************//
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include<conio.h>
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. typedef struct dato nodo;
  11.  
  12. nodo* crear_lista(nodo* lista);
  13. nodo* ingresar_dato(char* nombre, int boleta, nodo* lista);
  14.  
  15. void mostrar_lista(nodo* lista);
  16. void mostrar_nodo(nodo* elemento);
  17. void menu(void);
  18.  
  19. void borrar_lista(nodo* lista);
  20. nodo* borrar_nodoxnombre(char *nombre, nodo* lista);
  21. nodo* borrar_nodoxnota(int boleta, nodo* lista);
  22.  
  23. nodo* buscar_nodo(nodo* lista, char *caracter);
  24. void ordenar_lista(nodo* lista);
  25.  
  26.  
  27.  
  28. struct dato
  29.     {
  30.     char nombre[80];
  31.     int nota;
  32.     struct dato *sig;
  33.     };
  34.  
  35. nodo* crear_lista(nodo* lista)
  36.     {
  37.     return (lista = null);
  38.     }
  39.  
  40. nodo* ingresar_dato(char* nombre, int boleta, nodo* lista)
  41.     {
  42.     nodo *nuevo_dato;
  43.     nodo *auxiliar = null;
  44.  
  45.     nuevo_dato = (nodo*)malloc(sizeof(nodo));
  46.  
  47.     if(nuevo_dato != null)
  48.         {
  49.         strcpy((nuevo_dato->nombre), nombre);
  50.         nuevo_dato->nota = boleta;
  51.         nuevo_dato->sig = null;
  52.  
  53.         if(lista == null)
  54.             lista = nuevo_dato;
  55.         else
  56.             {
  57.             auxiliar = lista;
  58.             while(auxiliar->sig != null)
  59.                 auxiliar = auxiliar->sig;
  60.             auxiliar->sig = nuevo_dato;
  61.             }
  62.         }
  63.     else
  64.          cout<<"\n\nno se pudo reservar memoria\n\n";
  65.     return lista;
  66.     }
  67.  
  68. void mostrar_lista(nodo* lista)
  69.     {
  70.     nodo *auxiliar;
  71.     int contador = 0;
  72.  
  73.     if(lista == null)
  74.         cout<<"\n\nla lista esta vacia\n\n";
  75.  
  76.     auxiliar = lista;
  77.     while(auxiliar != null)
  78.         {
  79.          cout<<"\n\npersona"<<(contador+1);
  80.          cout<<"\nnombre y apellido: "<<auxiliar->nombre;
  81.          cout<<"\n\nboleta:      "<< auxiliar->nota;
  82.         contador++;
  83.  
  84.         auxiliar = auxiliar->sig;
  85.         }
  86.    cout<<"\nfin de lista\n\n";
  87.     }
  88.  
  89. void borrar_lista(nodo* lista)
  90.     {
  91.     nodo *borra;
  92.  
  93.     borra = lista;
  94.     while(borra)
  95.         {
  96.         lista = lista->sig;
  97.         free(borra);
  98.         borra = lista;
  99.         }
  100.     }
  101.  
  102. void menu(void)
  103.     {
  104.  
  105.      cout<<"\n\nlista_practica_3             3cm7:\n\n";
  106.      cout<<"1) ingresar dato\n";
  107.     cout<<"2) mostrar lista\n";
  108.    cout<<"3) borrar lista\n";
  109.     cout<<"4) borrar por nombre\n";
  110.      cout<<"5) borrar por boleta\n";
  111.      cout<<"6) buscar en lista\n";
  112.      cout<<"7) ordenar lista\n";
  113.     cout<<"0)salir\n\n";
  114.  
  115.  
  116.     }
  117.  
  118. nodo* borrar_nodoxnombre(char *nombre, nodo* lista)
  119.      {
  120.     if(lista != null)
  121.         {
  122.         nodo *ptraux;
  123.         nodo *ptranterior = null;
  124.         int cont;
  125.  
  126.         ptraux = lista;
  127.         while(ptraux != null && (strcmp(ptraux->nombre, nombre) != 0))
  128.             {
  129.             ptranterior = ptraux;
  130.             ptraux = ptraux->sig;
  131.             cont++;
  132.             }
  133.         if(cont == 1 && ptraux->sig == null)
  134.             {
  135.             free(ptraux);
  136.             lista = null;
  137.             }
  138.         if(ptraux == null)
  139.             cout<<"\n\nno se encontro una persona con ese nombre\n\n";
  140.         else if(ptranterior == null)
  141.             {
  142.             lista = lista->sig;
  143.             free(ptraux);
  144.             }
  145.         else
  146.             {
  147.             ptranterior->sig = ptraux->sig;
  148.             free(ptraux);
  149.             }
  150.         }
  151.  
  152.     return lista;
  153.     }
  154.  
  155. nodo* borrar_nodoxnota(int boleta, nodo* lista)
  156.         {
  157.     if(lista != null)
  158.         {
  159.         nodo *ptraux;
  160.         nodo *ptranterior = null;
  161.         int cont = 0;
  162.  
  163.         ptraux = lista;
  164.         while(ptraux != null && ptraux->nota != boleta)
  165.             {
  166.             ptranterior = ptraux;
  167.             ptraux = ptraux->sig;
  168.             cont++;
  169.             }
  170.         if(cont == 1 && ptraux->sig == null)
  171.             {
  172.             free(ptraux);
  173.             lista = null;
  174.             }
  175.         if(ptraux == null)
  176.             cout<<"\n\nno se encontro una persona con ese numero de boleta\n\n";
  177.         else if(ptranterior == null)
  178.             {
  179.             lista = lista->sig;
  180.             free(ptraux);
  181.             }
  182.         else
  183.             {
  184.             ptranterior->sig = ptraux->sig;
  185.             free(ptraux);
  186.             }
  187.         }
  188.  
  189.     return lista;
  190.     }
  191.  
  192. nodo* buscar_nodo(nodo* lista, char *caracter)
  193.     {
  194.     nodo *aux;
  195.     char noabuscar[20];
  196.     char a[] = "a";
  197.     char b[] = "b";
  198.     int nabuscar;
  199.     if(lista != null)
  200.         {
  201.         if(strcmp(caracter,a) == 0)
  202.             {
  203.             cout<<"\n\ningrese el nombre a buscar: ";
  204.             fflush(stdin);
  205.             fgets(noabuscar, 20, stdin);
  206.             aux = lista;
  207.             while(aux != null)
  208.                 {
  209.                 if(strcmp(aux->nombre, noabuscar) == 0)
  210.                     return aux;
  211.                 aux = aux->sig;
  212.                 }
  213.             return aux;
  214.             }
  215.         else if(strcmp(caracter,b) == 0)
  216.             {
  217.             cout<<"\n\ningrese la nota a buscar: ";
  218.             fflush(stdin);
  219.             cout<<nabuscar;
  220.             aux = lista;
  221.             while(aux != null)
  222.                 {
  223.                 if(aux->nota == nabuscar)
  224.                     return aux;
  225.                 aux = aux->sig;
  226.                 }
  227.             return aux;
  228.             }
  229.          else
  230.             {
  231.             cout<<"\n\nopcion no valida\n\n";
  232.             return 0;
  233.             }
  234.         }
  235.     }
  236.  
  237. void mostrar_nodo(nodo* elemento)
  238.     {
  239.     nodo* nodoencontrado;
  240.     nodoencontrado = elemento;
  241.     if(nodoencontrado == null)
  242.        cout<<"\n\nno se obtuvieron resultados\n\n";
  243.  
  244.  
  245.     else
  246.         {
  247.         cout<<"\n\nnodo encontrado:\n\n";
  248.         cout<<"\nnompre y apellido:"<< nodoencontrado->nombre;
  249.         cout<<"\nboleta:  "<< nodoencontrado->nota;
  250.  
  251.         }
  252.     }
  253. /*    \n\n\n\n   */
  254.  
  255. void ordenar_lista(nodo* lista)
  256.     {
  257.     nodo *anterior;
  258.     nodo *siguiente;
  259.     nodo temp;
  260.  
  261.     anterior = lista;
  262.  
  263.     while(anterior->sig != null)
  264.         {
  265.         siguiente = anterior->sig;
  266.  
  267.         while(siguiente != null)
  268.             {
  269.             if(strcmp(anterior->nombre, siguiente->nombre) > 0)
  270.                 {
  271.                 strcpy(temp.nombre, siguiente->nombre);
  272.                 temp.nota = siguiente->nota;
  273.                 strcpy(siguiente->nombre, anterior->nombre);
  274.                 siguiente->nota = anterior->nota;
  275.                 strcpy(anterior->nombre, temp.nombre);
  276.                 anterior->nota = temp.nota;
  277.                 }
  278.             siguiente = siguiente->sig;
  279.             }
  280.         anterior = anterior->sig;
  281.         siguiente = anterior->sig;
  282.         }
  283. cout<<"\n\nlista ordenada\n\n";
  284.  
  285.  
  286.     }
  287.  
  288.     int main(int argc, char** argv)
  289.     {
  290.     nodo *inicio;
  291.     nodo *nodobuscado;
  292.     char nom[20];
  293.     char nomaborrar[20];
  294.     int nborrar;
  295.     int nota, i, cant, op;
  296.     char s[2];
  297.  
  298.     inicio = crear_lista(inicio);
  299.  
  300.     menu();
  301.     cin>>op;
  302.     while(op != 0)
  303.         {
  304.         switch(op)
  305.             {
  306.             case 1: Cout<<"\n\nque cantidad de datos ingresara: ";
  307.                     cin>>cant;
  308.                     cout<<"\n\n";
  309.  
  310.                     cout<<"ingreso de datos:\n\n";
  311.                     for(i=0 ; i < cant ; i++)
  312.                         {
  313.                         cout<<"nombre y apellido: ";
  314.                         fflush(stdin);
  315.                         fgets(nom, 80, stdin);
  316.                        cout<<"\nboleta:      ";
  317.                         fflush(stdin);
  318.                         cin>>nota;
  319.                         cout<<"\n\n";
  320.                         inicio = ingresar_dato(nom, nota, inicio);
  321.                         }
  322.                     break;
  323.  
  324.             case 2: Mostrar_lista(inicio);
  325.                     break;
  326.  
  327.             case 3: Borrar_lista(inicio);
  328.                     free(inicio);
  329.                     cout<<"\n\nlista borrada\n\n";
  330.                     inicio = null;
  331.                     break;
  332.  
  333.             case 4: Cout<<"\n\ningrese el nombre a borrar\n\n";
  334.                     fflush(stdin);
  335.                     fgets(nomaborrar, 80, stdin);
  336.                     inicio = borrar_nodoxnombre(nomaborrar, inicio);
  337.                     break;
  338.  
  339.             case 5: Cout<<"\n\ningrese la nota a borrar\n\n";
  340.                     fflush(stdin);
  341.                     cin>>nborrar;
  342.                     inicio = borrar_nodoxnota(nborrar, inicio);
  343.                     break;
  344.  
  345.             case 6: Cout<<"\n\n('a') para buscar por nombre || ('b') para buscar por nota\n\n";
  346.                     fflush(stdin);
  347.                     fgets(s, 2, stdin);
  348.                     nodobuscado = buscar_nodo(inicio, s);
  349.                     mostrar_nodo(nodobuscado);
  350.                     break;
  351.  
  352.             case 7: Ordenar_lista(inicio);
  353.                     break;
  354.  
  355.  
  356.  
  357.             default: Cout<<"\n\n este no es una opcion, intentelo nuevamente// \n\n";
  358.             }
  359.              getch();
  360.             system("cls");
  361.         menu();
  362.         cin>>op;
  363.         }
  364.  
  365.  
  366.     return (exit_success);
  367.     }