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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


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

Desconectado Desconectado

Mensajes: 48



Ver Perfil
[C++][?] Ejercicio de la Facu
« en: 13 Diciembre 2011, 22:36 pm »

Hola muchachos, como estan??
yo estoy acá terminando los últimos ejercicios de la facu, para arrancar las vacaciones  ;-)
La cosa es que me dejaron un ejercicio que me esta sacando canas verdes y quería consultar a la experiencia que hay en este foro, que me ayudo por demás muchas veces :D
El problema es que tengo un ejercicio que esta por la mitad echo y lo tengo que terminar, pero me estoy enloqueciendo con lo que nos dan echo y no puedo continuar, estoy trabadisimo.
Acá les dejo el Enunciado. Y abajo el Código

Citar
En una competencia deportiva con distintas disciplinas se premia a sus corredores según su tiempo de competencia. Se deberá cargar una pila, ingresando los datos por teclado para cada Disciplina: Número de Disciplina, Número de Competidor, Categoría y  Tiempo de la prueba.
Generar un árbol binario ordenado simétricamente que contenga solamente los competidores de la Categoría “J” Juvenil donde cada nodo tiene el Número del competidor y un puntero a una lista simple con las disciplinas en las cuales ha participado y el tiempo de cada prueba.  Antes de finalizar el programa, guardar en un archivo secuencial desde el árbol los competidores de la categoría J, y para cada competidor la suma total de tiempos de disciplina, cada registro guardará Número del Competidor, Tiempo total de la competencia. Obtener desde el archivo el ganador de la competencia.

Puede utilizar en el programa principal todas las rutinas que se le entregan ya codificadas ensamblándolas adecuadamente y escribiendo las que hicieran falta, a su criterio.


Citar
Código
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4.  
  5. //Definici&#243;n de pila
  6. typedef struct TCompetidor
  7. {
  8. int Disciplina;
  9.   int Competidor;
  10.   char Categoria;
  11.   float TiempoDisciplina;
  12. }TCompetidor;
  13.  
  14. typedef struct NodoPila * PuntPila;
  15. typedef struct NodoPila
  16. {
  17. TCompetidor info;
  18. PuntPila sig;
  19. }NodoPila;
  20.  
  21. typedef struct TPila
  22. {
  23. PuntPila tope;
  24. }TPila;
  25.  
  26. //Definici&#243;n lista de Disciplina y Tiempo de la misma
  27. typedef struct TDisciplinaLista
  28. {
  29. int Disciplina;
  30.   float TiempoDisciplina;
  31. } TDisciplinaLista;
  32.  
  33. typedef struct NodoLista * PuntLista;
  34. typedef struct NodoLista
  35. {
  36. TDisciplinaLista info;
  37. PuntLista sig;
  38. }NodoLista;
  39.  
  40. //Definici&#243;n &#225;rbol de Categor&#237;a J
  41. typedef struct TCategoria
  42. {
  43. int Competidor;
  44.   PuntLista priDisciplina;
  45. } TSector;
  46.  
  47. typedef struct NodoArbol * PuntArbol;
  48. typedef struct NodoArbol
  49. {
  50. TCategoria info;
  51. PuntArbol izq, der;
  52. }NodoArbol;
  53.  
  54.  
  55. //Prototipos de Pila
  56. void inicializar(TPila &);
  57. int vacia(TPila);
  58. void poner(TPila &, TCompetidor);
  59. void sacar(TPila &, TCompetidor &);
  60. void ver(TPila , TCompetidor &);
  61.  
  62. void cargarPila(TPila &);
  63.  
  64. //Prototipos agregar en lista de Lista
  65. void agregar(PuntLista &, TDisciplinaLista);
  66.  
  67. //Prototipo de Arbol
  68. void buscarAgregar(PuntArbol &, int, PuntArbol &);
  69.  
  70.  
  71. main()
  72. {
  73. int a;
  74.  
  75. do
  76. {
  77. cout << "1- Agregar nueva Disciplina"<<endl;
  78. cout << "2- Generar Arbol con Juveniles" <<endl;
  79. cin >> a;
  80. switch (a)
  81. {
  82. case 1:
  83. {
  84. TCompetidor datocomp;
  85. PuntPila pila;
  86. inicializar (pila);
  87.  
  88.      cout << "Ingrese Nro de Disciplina"<<endl;
  89. cin >> datocomp.Disciplina;
  90. cout << "Ingrese Nro de Competidor"<<endl;
  91. cin >> datocomp.Competidor;
  92. cout << "Ingrese Categoria" <<endl;
  93. cin >> datocomp.Categoria;
  94. cout << "Ingrese Tiempo de Prueba"<<endl;
  95. cin >> datocomp.TiempoDisciplina;
  96. poner (pila , datocomp);
  97.      break;
  98.   }
  99.  
  100. case 2:
  101. {
  102. PuntArbol raiz;
  103.  
  104.  
  105.      break;
  106. }
  107. }
  108. while (a < 2);
  109. }
  110.  
  111.  
  112. //Funciones de pila
  113. void inicializar(TPila &p)
  114. {
  115. p.tope = NULL;
  116. }
  117.  
  118. int vacia(TPila p)
  119. {
  120. return (p.tope == NULL);
  121. }
  122.  
  123. void poner(TPila &p, TCompetidor dato)
  124. {
  125. PuntPila n;
  126.   n = new NodoPila;
  127.   n->info = dato;
  128.   n->sig = p.tope;
  129.   p.tope = n;
  130. }
  131.  
  132. void sacar(TPila &p, TCompetidor &dato)
  133. {
  134.  if (!vacia(p))
  135.  {
  136.   PuntPila n;
  137.    n = p.tope;
  138.    dato = n->info;
  139.    p.tope = n->sig;
  140.    delete (n);
  141.  }
  142. }
  143.  
  144. void ver(TPila p, TCompetidor &dato)
  145. {
  146.  if (!vacia(p))
  147.    dato = p.tope->info;
  148. }
  149.  
  150. void cargarPila(TPila & p)
  151. {
  152.  
  153. }
  154.  
  155. //Funciones en lista simple
  156. void agregar(PuntLista & pri, TDisciplinaLista dato)
  157. {
  158. PuntLista ant,n = pri;
  159. while (r!=NULL && r->info.Disciplina < n)
  160. {
  161. r->ant = r;
  162. r = r->sig;
  163. }
  164. if (r==NULL)
  165. r = n;
  166. else
  167. {
  168. n->ant = r->ant->sig;
  169. n->sig = r;
  170. }
  171. }
  172.  
  173. //Funciones de &#225;rbol
  174. void buscarAgregar(PuntArbol & raiz, int unCompetidor, PuntArbol & r)
  175. {
  176. //Devuelve el puntero al nodo correspondiente al competidor con unCompetidor
  177.   //Si el competidor no est&#225; en el &#225;rbol, agrega el nodo y devuelve su puntero
  178. PuntArbol ant;
  179.   r = raiz;
  180.   while (r!=NULL && r->info.Competidor != unCompetidor)
  181.   {
  182.   ant = r;
  183.      if(unCompetidor < r->info.Competidor)
  184.       r = r->izq;
  185.      else
  186.       r = r->der;
  187.   }
  188.   if(r == NULL)
  189.   {
  190.   r = new NodoArbol;
  191.   r->info.Competidor = unCompetidor;
  192.   r->info.priDisciplina = NULL;
  193.   r->izq = r->der = NULL;
  194.  
  195.   if(raiz == NULL)
  196.   raiz = r;
  197. else
  198.   {
  199.   if(unCompetidor < ant->info.Competidor)
  200.       ant->izq = r;
  201.       else
  202.       ant->der = r;
  203.      }
  204.   }
  205. }
  206.  


Desde Ya Muchas Gracias

PD: no se como hacer para que aparezca el scroll en donde va el código :silbar:


« Última modificación: 13 Diciembre 2011, 23:46 pm por El_Rengo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
VB ejercicio 3
Ejercicios
Codename!! 6 12,336 Último mensaje 25 Enero 2005, 04:21 am
por facirio
vb ejercicio 6 « 1 2 »
Ejercicios
Codename!! 12 10,746 Último mensaje 25 Julio 2004, 21:10 pm
por soplo
Ejercicio de C
Ejercicios
nibble 2 6,093 Último mensaje 4 Mayo 2005, 00:24 am
por Kpax
[Ejercicio] Aca tienen un ejercicio para practicar « 1 2 3 »
Programación Visual Basic
Dreamaker 20 16,577 Último mensaje 5 Septiembre 2010, 02:57 am
por TGa.
ejercicio conclase pag 70 ejercicio 1
Programación C/C++
flony 2 4,564 Último mensaje 17 Octubre 2010, 12:16 pm
por Akai
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines