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

Gracias por su pronta respuesta
esto es lo que llevo, pero aún así me siguen mandando errores.
seguire tratando, y obviamente no quiero que me lo hagan, ya que gracias a esto depende una calificación y los conocimientos adquiridos que tenga gracias a esta practica

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include<conio.h>
  5. #include <iostream>
  6. using namespace std;
  7.  
  8. class nodo{
  9. public:
  10. void crear_lista(nodo* lista);
  11. void ingresar_dato(char* nombre, int boleta, nodo* lista);
  12.  
  13. void mostrar_lista(nodo* lista);
  14. void mostrar_nodo(nodo* elemento);
  15. void menu(void);
  16.  
  17. void borrar_lista(nodo* lista);
  18. void borrar_nodoxnombre(char *nombre, nodo* lista);
  19. void borrar_nodoxnota(int boleta, nodo* lista);
  20.  
  21. void buscar_nodo(nodo* lista, char *caracter);
  22. void ordenar_lista(nodo* lista);
  23. };
  24.  
  25.  
  26. class dato
  27.     {
  28.         public:
  29.     char nombre[80];
  30.     int nota;
  31.      dato *sig;
  32.     };
  33.  
  34. void nodo ::crear_lista(nodo* lista)
  35.     {
  36.     return (*lista = NULL);
  37.     }
  38.  
  39. void nodo ::ingresar_dato(char* nombre, int boleta, nodo* lista)
  40.     {
  41.     nodo *nuevo_dato;
  42.     nodo *auxiliar = NULL;
  43.  
  44.     nuevo_dato = (nodo*)malloc(sizeof(nodo));
  45.  
  46.     if(nuevo_dato != NULL)
  47.         {
  48.         strcpy((nuevo_dato->nombre), nombre);
  49.         nuevo_dato->nota = boleta;
  50.         nuevo_dato->sig = NULL;
  51.  
  52.         if(lista == NULL)
  53.             lista = nuevo_dato;
  54.         else
  55.             {
  56.             auxiliar = lista;
  57.             while(auxiliar->sig != NULL)
  58.                 auxiliar = auxiliar->sig;
  59.             auxiliar->sig = nuevo_dato;
  60.             }
  61.         }
  62.     else
  63.          cout<<"\n\nNo se pudo reservar memoria\n\n";
  64.     return lista;
  65.     }
  66.  
  67. int nodo ::void mostrar_lista(nodo* lista)
  68.     {
  69.     nodo *auxiliar;
  70.     int contador = 0;
  71.  
  72.     if(lista == NULL)
  73.         cout<<"\n\nLa lista esta vacia\n\n";
  74.  
  75.     auxiliar = lista;
  76.     while(auxiliar != NULL)
  77.         {
  78.          cout<<"\n\nPersona"<<(contador+1);
  79.          cout<<"\nNombre y Apellido: "<<auxiliar->nombre;
  80.          cout<<"\n\nBoleta:      "<< auxiliar->nota;
  81.         contador++;
  82.  
  83.         auxiliar = auxiliar->sig;
  84.         }
  85.    cout<<"\nFin de lista\n\n";
  86.     }
  87.  
  88. void nodo::void borrar_lista(nodo* lista)
  89.     {
  90.     nodo *borra;
  91.  
  92.     borra = lista;
  93.     while(borra)
  94.         {
  95.         lista = lista->sig;
  96.         free(borra);
  97.         borra = lista;
  98.         }
  99.     }
  100.  
  101. void nodo::void menu(void)
  102.     {
  103.  
  104.      cout<<"\n\nLista_Practica_3             3CM7:\n\n";
  105.      cout<<"1) Ingresar dato\n";
  106.     cout<<"2) Mostrar lista\n";
  107.    cout<<"3) Borrar lista\n";
  108.     cout<<"4) Borrar por nombre\n";
  109.      cout<<"5) Borrar por boleta\n";
  110.      cout<<"6) Buscar en lista\n";
  111.      cout<<"7) Ordenar lista\n";
  112.     cout<<"0)SALIR\n\n";
  113.  
  114.  
  115.     }
  116.  
  117. void nodo ::borrar_nodoxnombre(char *nombre, nodo* lista)
  118.      {
  119.     if(lista != NULL)
  120.         {
  121.         nodo *ptraux;
  122.         nodo *ptranterior = NULL;
  123.         int cont;
  124.  
  125.         ptraux = lista;
  126.         while(ptraux != NULL && (strcmp(ptraux->nombre, nombre) != 0))
  127.             {
  128.             ptranterior = ptraux;
  129.             ptraux = ptraux->sig;
  130.             cont++;
  131.             }
  132.         if(cont == 1 && ptraux->sig == NULL)
  133.             {
  134.             free(ptraux);
  135.             lista = NULL;
  136.             }
  137.         if(ptraux == NULL)
  138.             cout<<"\n\nNo se encontro una persona con ese nombre\n\n";
  139.         else if(ptranterior == NULL)
  140.             {
  141.             lista = lista->sig;
  142.             free(ptraux);
  143.             }
  144.         else
  145.             {
  146.             ptranterior->sig = ptraux->sig;
  147.             free(ptraux);
  148.             }
  149.         }
  150.  
  151.     return lista;
  152.     }
  153.  
  154. void nodo:: borrar_nodoxnota(int boleta, nodo* lista)
  155.         {
  156.     if(lista != NULL)
  157.         {
  158.         nodo *ptraux;
  159.         nodo *ptranterior = NULL;
  160.         int cont = 0;
  161.  
  162.         ptraux = lista;
  163.         while(ptraux != NULL && ptraux->nota != boleta)
  164.             {
  165.             ptranterior = ptraux;
  166.             ptraux = ptraux->sig;
  167.             cont++;
  168.             }
  169.         if(cont == 1 && ptraux->sig == NULL)
  170.             {
  171.             free(ptraux);
  172.             lista = NULL;
  173.             }
  174.         if(ptraux == NULL)
  175.             cout<<"\n\nNo se encontro una persona con ese numero de boleta\n\n";
  176.         else if(ptranterior == NULL)
  177.             {
  178.             lista = lista->sig;
  179.             free(ptraux);
  180.             }
  181.         else
  182.             {
  183.             ptranterior->sig = ptraux->sig;
  184.             free(ptraux);
  185.             }
  186.         }
  187.  
  188.     return lista;
  189.     }
  190.  
  191. void nodo:: buscar_nodo(nodo* lista, char *caracter)
  192.     {
  193.     nodo *aux;
  194.     char noabuscar[20];
  195.     char a[] = "a";
  196.     char b[] = "b";
  197.     int nabuscar;
  198.     if(lista != NULL)
  199.         {
  200.         if(strcmp(caracter,a) == 0)
  201.             {
  202.             cout<<"\n\nIngrese el nombre a buscar: ";
  203.             fflush(stdin);
  204.             fgets(noabuscar, 20, stdin);
  205.             aux = lista;
  206.             while(aux != NULL)
  207.                 {
  208.                 if(strcmp(aux->nombre, noabuscar) == 0)
  209.                     return aux;
  210.                 aux = aux->sig;
  211.                 }
  212.             return aux;
  213.             }
  214.         else if(strcmp(caracter,b) == 0)
  215.             {
  216.             cout<<"\n\nIngrese la nota a buscar: ";
  217.             fflush(stdin);
  218.             cout<<nabuscar;
  219.             aux = lista;
  220.             while(aux != NULL)
  221.                 {
  222.                 if(aux->nota == nabuscar)
  223.                     return aux;
  224.                 aux = aux->sig;
  225.                 }
  226.             return aux;
  227.             }
  228.          else
  229.             {
  230.             cout<<"\n\nOpcion no valida\n\n";
  231.             return 0;
  232.             }
  233.         }
  234.     }
  235.  
  236. void nodo::void mostrar_nodo(nodo* elemento)
  237.     {
  238.     nodo* nodoencontrado;
  239.     nodoencontrado = elemento;
  240.     if(nodoencontrado == NULL)
  241.        cout<<"\n\nNo se obtuvieron resultados\n\n";
  242.  
  243.  
  244.     else
  245.         {
  246.         cout<<"\n\nNodo encontrado:\n\n";
  247.         cout<<"\nNompre y apellido:"<< nodoencontrado->nombre;
  248.         cout<<"\nBoleta:  "<< nodoencontrado->nota;
  249.  
  250.         }
  251.     }
  252. /*    \n\n\n\n   */
  253.  
  254. void nodo :: void ordenar_lista(nodo* lista)
  255.     {
  256.     nodo *anterior;
  257.     nodo *siguiente;
  258.     nodo temp;
  259.  
  260.     anterior = lista;
  261.  
  262.     while(anterior->sig != NULL)
  263.         {
  264.         siguiente = anterior->sig;
  265.  
  266.         while(siguiente != NULL)
  267.             {
  268.             if(strcmp(anterior->nombre, siguiente->nombre) > 0)
  269.                 {
  270.                 strcpy(temp.nombre, siguiente->nombre);
  271.                 temp.nota = siguiente->nota;
  272.                 strcpy(siguiente->nombre, anterior->nombre);
  273.                 siguiente->nota = anterior->nota;
  274.                 strcpy(anterior->nombre, temp.nombre);
  275.                 anterior->nota = temp.nota;
  276.                 }
  277.             siguiente = siguiente->sig;
  278.             }
  279.         anterior = anterior->sig;
  280.         siguiente = anterior->sig;
  281.         }
  282. cout<<"\n\nLista ordenada\n\n";
  283.  
  284.  
  285.     }
  286.  
  287.     int main(int argc, char** argv)
  288.     {
  289.          Listas list;
  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 = list.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 = list.ingresar_dato(nom, nota, inicio);
  321.                         }
  322.                     break;
  323.  
  324.             case 2: list.mostrar_lista(inicio);
  325.                     break;
  326.  
  327.             case 3: list.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 = list.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 = list.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.                     list.nodobuscado = buscar_nodo(inicio, s);
  349.                     list.mostrar_nodo(nodobuscado);
  350.                     break;
  351.  
  352.             case 7: list.ordenar_lista(inicio);
  353.                     break;
  354.  
  355.  
  356.  
  357.             default: cout<<"\n\n \\Opcion incorrecta --- Intentelo nuevamente// \n\n";
  358.             }
  359.              getch();
  360.             system("cls");
  361.         menu();
  362.         cin>>op;
  363.         }
  364.  
  365.  
  366.     return (EXIT_SUCCESS);
  367.     }