Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #include "PlanEstudio.h"
  2.  
  3. PlanEstudio::PlanEstudio(): raiz(0) {}
  4.  
  5. bool PlanEstudio::estaVacio() {
  6.  
  7. return raiz == 0;
  8. }
  9.  
  10. materia* PlanEstudio::buscar(int codigoPadre) {
  11.  
  12. return buscarRec(raiz, codigoPadre);
  13. }
  14.  
  15. materia* PlanEstudio::buscarRec(materia* raiz, int codigoPadre) {
  16. if (raiz == 0)
  17. return 0;
  18.  
  19. if (raiz->codigo == codigoPadre)
  20. return raiz;
  21.  
  22. for (int i = 0; i < raiz->cantiHijos; i++) {
  23.  
  24. materia* tmp = buscarRec(raiz->hijos[i], codigoPadre);
  25. if (tmp != 0)
  26. return tmp;
  27. }
  28. return 0;
  29. }
  30.  
  31. void PlanEstudio::imprimir() {
  32. imprimirRec(raiz);
  33. }
  34.  
  35. void PlanEstudio::imprimirRec(materia* raiz) {
  36. if (raiz == 0) {
  37. return;
  38. }
  39.  
  40. cout << "Materia { codigo: " << raiz->codigo << ", Nombre: " << raiz->nombre << "}"<< endl;
  41.  
  42. for (int i = 0; i < raiz->cantiHijos; i++) {
  43. imprimirRec(raiz->hijos[i]);
  44. }
  45. }
  46.  
  47. void PlanEstudio::agregarMateria(int codigo, const char* nombre, int uv, int CodigoPadre) {
  48.  
  49. materia* nueva = new materia(codigo, nombre, uv);
  50.  
  51. if (estaVacio()) {
  52. raiz = nueva;
  53. return;
  54. }
  55.  
  56. materia* padre = buscar(CodigoPadre);
  57.  
  58. if (padre == 0) {
  59. cout << "Codigo de clase requisisto incorrecto!";
  60. delete nueva;
  61. return;
  62. }
  63.  
  64. //crear copia de hijos
  65. materia** tmpHijos = new materia * [padre->cantiHijos +1]; //declarando un arreglo de apuntadores
  66. for (int i = 0; i < padre->cantiHijos; i++) {
  67. tmpHijos[i] = padre->hijos[i];
  68. }
  69. tmpHijos[padre->cantiHijos] = nueva;
  70.  
  71. if (padre->cantiHijos != 0) {
  72. delete padre->hijos;
  73. }
  74.  
  75. padre->cantiHijos++;
  76.  
  77. padre->hijos = tmpHijos;
  78.  
  79. cout << "Materia Ingresada!";
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement