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
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.
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
#include <iostream.h> #include <conio.h> #include <stdio.h> //Definición de pila typedef struct TCompetidor { int Disciplina; int Competidor; char Categoria; float TiempoDisciplina; }TCompetidor; typedef struct NodoPila * PuntPila; typedef struct NodoPila { TCompetidor info; PuntPila sig; }NodoPila; typedef struct TPila { PuntPila tope; }TPila; //Definición lista de Disciplina y Tiempo de la misma typedef struct TDisciplinaLista { int Disciplina; float TiempoDisciplina; } TDisciplinaLista; typedef struct NodoLista * PuntLista; typedef struct NodoLista { TDisciplinaLista info; PuntLista sig; }NodoLista; //Definición árbol de Categoría J typedef struct TCategoria { int Competidor; PuntLista priDisciplina; } TSector; typedef struct NodoArbol * PuntArbol; typedef struct NodoArbol { TCategoria info; PuntArbol izq, der; }NodoArbol; //Prototipos de Pila void inicializar(TPila &); int vacia(TPila); void poner(TPila &, TCompetidor); void sacar(TPila &, TCompetidor &); void ver(TPila , TCompetidor &); void cargarPila(TPila &); //Prototipos agregar en lista de Lista void agregar(PuntLista &, TDisciplinaLista); //Prototipo de Arbol void buscarAgregar(PuntArbol &, int, PuntArbol &); main() { int a; do { cout << "1- Agregar nueva Disciplina"<<endl; cout << "2- Generar Arbol con Juveniles" <<endl; cin >> a; switch (a) { case 1: { TCompetidor datocomp; PuntPila pila; inicializar (pila); cout << "Ingrese Nro de Disciplina"<<endl; cin >> datocomp.Disciplina; cout << "Ingrese Nro de Competidor"<<endl; cin >> datocomp.Competidor; cout << "Ingrese Categoria" <<endl; cin >> datocomp.Categoria; cout << "Ingrese Tiempo de Prueba"<<endl; cin >> datocomp.TiempoDisciplina; poner (pila , datocomp); break; } case 2: { PuntArbol raiz; break; } } while (a < 2); } //Funciones de pila void inicializar(TPila &p) { p.tope = NULL; } int vacia(TPila p) { return (p.tope == NULL); } void poner(TPila &p, TCompetidor dato) { PuntPila n; n = new NodoPila; n->info = dato; n->sig = p.tope; p.tope = n; } void sacar(TPila &p, TCompetidor &dato) { if (!vacia(p)) { PuntPila n; n = p.tope; dato = n->info; p.tope = n->sig; delete (n); } } void ver(TPila p, TCompetidor &dato) { if (!vacia(p)) dato = p.tope->info; } void cargarPila(TPila & p) { } //Funciones en lista simple void agregar(PuntLista & pri, TDisciplinaLista dato) { PuntLista ant,n = pri; while (r!=NULL && r->info.Disciplina < n) { r->ant = r; r = r->sig; } if (r==NULL) r = n; else { n->ant = r->ant->sig; n->sig = r; } } //Funciones de árbol void buscarAgregar(PuntArbol & raiz, int unCompetidor, PuntArbol & r) { //Devuelve el puntero al nodo correspondiente al competidor con unCompetidor //Si el competidor no está en el árbol, agrega el nodo y devuelve su puntero PuntArbol ant; r = raiz; while (r!=NULL && r->info.Competidor != unCompetidor) { ant = r; if(unCompetidor < r->info.Competidor) r = r->izq; else r = r->der; } if(r == NULL) { r = new NodoArbol; r->info.Competidor = unCompetidor; r->info.priDisciplina = NULL; r->izq = r->der = NULL; if(raiz == NULL) raiz = r; else { if(unCompetidor < ant->info.Competidor) ant->izq = r; else ant->der = r; } } }
Desde Ya Muchas Gracias
PD: no se como hacer para que aparezca el scroll en donde va el código