[ Foro de C++ ]

AYUDA CON MI CÓDIGO

04-Mar-2022 16:08
Invitado (estiven)
0 Respuestas

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

struct estudiante
{
int codigo_est;
string nom_estudiante;
float nota;
estudiante *ap_est;
} *nuevo_estudiante, *bus_est1, *bus_est2, *nota_repetida;

struct salon
{
int codigo_sal;
string desc_materia;
string nom_docente;
salon *ap_s;
estudiante *ap_e;

} *cab, *cola, *nuevo_sal, *busca1, *busca2, *ap_e_notarepetida;


// Fun.
void menu_salon(void);
void menu_estudiante(void);

//fun. salones
void ingresar_salon(void);
void listar_salon(void);
void borrar_salon(void);
void modificar_salon(void);
void reinsertar_salon(salon *new_salon);
void recorrer_salones(void);

//fun estudiantes
void ingresar_est(void);
void listar_est_general();
void listar_est_salon();
void listar_un_estudiante(void);
void listar_mejor_nota(void);
void listar_baja_nota(void);
void listar_promedio_salon(void);
void borrar_est(void);
void listar_est_notarepetida(void);

void menu(void)
{
int opc0;
opc0 = 9;

while ( opc0 != 0)
{
system("cls");

cout<<"\n MULTILISTAS "<<endl;
cout<<"\n 1 Menu Saloes ";
cout<<"\n 2 Menu Estudiantes";
cout<<"\n 0 Terminar";
cout<<"\n Ingrese Opcion ";

cin>>opc0;
fflush(stdin);    //esta funcion libera la memoria


switch(opc0)
{
case 1:
menu_salon(); break;
case 2:
menu_estudiante(); break;

default:
cout <<"\n Opcion no Valida !! ";
break;
}
cout <<"\n\n Oprima una tecla para continuar";
getch();
}
}

void menu_salon(void)
{
int opc1;
opc1 = 9;

while ( opc1 != 0)
{
system("cls");

cout<<"\n MULTILISTAS SALONES"<<endl;
cout<<"\n 1 Adicionar ";
cout<<"\n 2 Listar";
cout<<"\n 3 Modificar";
cout<<"\n 4 Borrar";

cout<<"\n 0 Terminar";
cout<<"\n Ingrese Opcion ";

cin>>opc1;
fflush(stdin);    //esta funcion libera la memoria


switch(opc1)
{
case 1:
ingresar_salon();break;
case 2:
listar_salon(); break;
case 3:
modificar_salon(); break;
case 4:
borrar_salon(); break;
case 0:
break;

default:
cout <<"\n Opcion no Valida !! ";
break;
}
cout <<"\n\n Oprima una tecla para continuar";
getch();
}
}

void ingresar_salon(void)
{
int inserto;
inserto = 0;


  if ( !cab )
  {
    cab = new(salon);
    cout <<"\n Digite Codigo  Salon   :    ";
    cin >>cab->codigo_sal;
    fflush(stdin);    //esta funcion libera la memoria
   
    cout <<"\n Digite Descripcion Salon-Materia   : ";
    getline(cin,cab->desc_materia);  
 
fflush(stdin);    //esta funcion libera la memoria

cout << "\n Digite Nombre Docente : ";
getline(cin,cab->nom_docente);  
 
fflush(stdin);    //esta funcion libera la memoria

cola = new(salon);
cola = cab;

cab->ap_s = NULL;
cab->ap_e = NULL;
return;
  }
 
  nuevo_sal = new(salon);
  cout <<"\n Digite Codigo  Salon   :    ";
  cin >>nuevo_sal->codigo_sal;
  fflush(stdin);    //esta funcion libera la memoria
  cout <<"\n Digite Descripcion Salon-Materia   : ";
  getline(cin,nuevo_sal->desc_materia);  
 
fflush(stdin);    //esta funcion libera la memoria

cout << "\n Digite Nombre Docente : ";
getline(cin,nuevo_sal->nom_docente);  
 
fflush(stdin);    //esta funcion libera la memoria

nuevo_sal->ap_s = NULL;
nuevo_sal->ap_e = NULL;


   if ( nuevo_sal->codigo_sal <= cab->codigo_sal )  // se inserta al inicio
   {
    nuevo_sal->ap_s = cab;
    cab = nuevo_sal;
}
else
{
if ( nuevo_sal->codigo_sal >= cola->codigo_sal) // INSERTAR AL FINAL
{
cola->ap_s = nuevo_sal;
cola = nuevo_sal;
}
else
{
 busca1 = new(salon);    busca2 = new(salon);
 
 busca1 = cab;
 busca2 = busca1->ap_s;
 //busca2 = cab->apuntador;  esta opcion es igual a la anterior
   
 while ( inserto == 0 )
 {
  if ( busca2->codigo_sal >= nuevo_sal->codigo_sal )
  {
  nuevo_sal->ap_s  = busca2;
  busca1->ap_s     = nuevo_sal;
  inserto = 2;
}
  else
  {
  busca1 = busca2;
  busca2 = busca1->ap_s;
  //busca2 = busca2->apuntador;  esta opcion es igual a la anterior
}
 }
}
}
}

void listar_salon(void)
{
if ( !cab )
  {
    cout << " no hay salones creados "<<endl;
}
else
{
nuevo_sal = new(salon);
nuevo_sal = cab;

while ( nuevo_sal != NULL )
{
cout <<"\n Codigo Salon  : "<<nuevo_sal->codigo_sal;
cout <<"\n Descripcion Clase : "<<nuevo_sal->desc_materia;
cout <<"\n Docente Clase : "<<nuevo_sal->nom_docente<<endl;

nuevo_sal = nuevo_sal->ap_s;  
}
}
getch();
}
 
void borrar_salon(void)
{
int cod_sal_bor;
int encontro;
encontro = 0;

if ( !cab )
  {
    cout << " no hay salones creados para Borrar"<<endl;
}
else
{
cout <<"\n Digite Codigo  Salon a Borrar   :    ";
  cin >>cod_sal_bor;
  fflush(stdin);
 
if ( cab->codigo_sal == cod_sal_bor )
{
if ( cab->ap_e != NULL )
{
cout <<"\n no se puede Borrar el salon por tener estudiantes ";
}
else
{
nuevo_sal = new(salon);
nuevo_sal = cab;
cab       = cab->ap_s;
delete(nuevo_sal);

cout <<"\n se borro el nodo con el codigo :"<<cod_sal_bor;
}
}
else
{
busca1 = new(salon);    busca2 = new(salon);
 
  busca1 = cab;
  busca2 = busca1->ap_s;
while( encontro == 0 && busca2 != NULL )
{
if ( busca2->codigo_sal = cod_sal_bor )
{
if ( busca2->ap_e != NULL )
{
cout <<"\n no se puede Borrar el salon por tener estudiantes ";
encontro = 4;
}
else
{
encontro = 3;
if ( busca2 == cola )
{
cola = busca1;
}
busca1->ap_s = busca2->ap_s;
delete(busca2);
}
}
else
{
if ( busca2->codigo_sal > cod_sal_bor )
{
cout<<"\n No Existe el codigo a borrar el la Lista ";
encontro = 2;
}
else
{
busca1 = busca2;
  busca2 = busca1->ap_s;
}
}
}
}
}
}

void modificar_salon(void)
{
   salon *aux_salon;
int cod_sal_mod;
int encontro;
encontro = 0;

if ( !cab )
  {
    cout << " no hay salones creados para Modificar"<<endl;
}
else
{
cout <<"\n Digite Codigo  Salon a Borrar   :    ";
  cin >>cod_sal_mod;
  fflush(stdin);
 
if ( cab->codigo_sal == cod_sal_mod )
{
aux_salon = new(salon);
aux_salon->codigo_sal   = cab->codigo_sal;
aux_salon->desc_materia = cab->desc_materia;
aux_salon->nom_docente  = cab->nom_docente;

cout <<"\n Codigo Salon      : "<<cab->codigo_sal;
cout <<"\n Descripcion Clase : "<<cab->desc_materia;
cout <<"\n Docente Clase     : "<<cab->nom_docente<<endl;

cout <<"\n Digite Codigo  Salon   :    ";
    cin >>cab->codigo_sal;
    fflush(stdin);    //esta funcion libera la memoria
   
    cout <<"\n Digite Descripcion Salon-Materia   : ";
    getline(cin,cab->desc_materia);  
  fflush(stdin);    //esta funcion libera la memoria

cout << "\n Digite Nombre Docente : ";
getline(cin,cab->nom_docente);  
  fflush(stdin);    //esta funcion libera la memoria
 
 
  if ( cab != cola )
  {
  if ( cab->codigo_sal != aux_salon->codigo_sal )
  {
  nuevo_sal = new(salon);
nuevo_sal = cab;
cab       = cab->ap_s;
nuevo_sal->ap_s = NULL;
reinsertar_salon(nuevo_sal);
}
}
}
else
{
busca1 = new(salon);    busca2 = new(salon);
busca1 = cab;
busca2 = busca1->ap_s;
int encontro;
encontro = 0;
while( encontro == 0 && busca2 != NULL )
{
if ( busca2->codigo_sal == cod_sal_mod )
{
aux_salon = new(salon);
aux_salon->codigo_sal   = busca2->codigo_sal;
aux_salon->desc_materia  = busca2->desc_materia;
aux_salon->nom_docente  = busca2->nom_docente;

cout <<"\n Codigo Salon      : "<<busca2->codigo_sal;
cout <<"\n Descripcion Clase : "<<busca2->desc_materia;
cout <<"\n Docente Clase     : "<<busca2->nom_docente<<endl;

cout <<"\n Digite Codigo  Salon   :    ";
    cin >>busca2->codigo_sal;
    fflush(stdin);    //esta funcion libera la memoria
   
    cout <<"\n Digite Descripcion Salon-Materia   : ";
    getline(cin,busca2->desc_materia);  
  fflush(stdin);    //esta funcion libera la memoria

cout << "\n Digite Nombre Docente : ";
getline(cin,busca2->nom_docente);  
  fflush(stdin);    //esta funcion libera la memoria
 
 
  if ( busca2->codigo_sal != aux_salon->codigo_sal )
  {
  nuevo_sal = new(salon);
  busca1->ap_s = busca2->ap_s;
nuevo_sal = busca2;
nuevo_sal->ap_s = NULL;
if ( cola == busca2 )
{
cola = busca1;
}
reinsertar_salon(nuevo_sal);
}

}
}
}
}
}


void reinsertar_salon(salon *new_salon)
{
int inserto;
inserto = 0;
   if ( new_salon->codigo_sal <= cab->codigo_sal )  // se inserta al inicio
   {
    new_salon->ap_s = cab;
    cab = new_salon;
}
else
{
if ( new_salon->codigo_sal >= cola->codigo_sal) // INSERTAR AL FINAL
{
cola->ap_s = new_salon;
cola = new_salon;
}
else
{
 busca1 = new(salon);    busca2 = new(salon);
 
 busca1 = cab;
 busca2 = busca1->ap_s;
 //busca2 = cab->apuntador;  esta opcion es igual a la anterior
   
 while ( inserto == 0 )
 {
  if ( busca2->codigo_sal >= new_salon->codigo_sal )
  {
  new_salon->ap_s  = busca2;
  busca1->ap_s     = new_salon;
  inserto = 2;
}
  else
  {
  busca1 = busca2;
  busca2 = busca1->ap_s;
  //busca2 = busca2->apuntador;  esta opcion es igual a la anterior
}
 }
}
}
}



//************  fun. de estudiantes *******
void menu_estudiante(void)
{
int opc2;
opc2 = 99;

while ( opc2 != 0)
{
system("cls");

cout<<"\n MULTILISTAS SALONES"<<endl;
cout<<"\n 1 Adicionar Estudiante";
cout<<"\n 2 Listar General ";
cout<<"\n 3 Listar Estudiantes Nota Repetida";
cout<<"\n 4 Borrar";

cout<<"\n 0 Terminar";
cout<<"\n Ingrese Opcion ";

cin>>opc2;
fflush(stdin);    //esta funcion libera la memoria


switch(opc2)
{
case 1:
ingresar_est(); break;
case 2:
listar_est_general(); break;
case 3:
listar_est_notarepetida(); break;

default:
cout <<"\n Opcion no Valida !! ";
break;
}
cout <<"\n\n Oprima una tecla para continuar";
getch();
}
}

void ingresar_est()
{
int cod_sal;
int encontro_salon;
encontro_salon = 0;

int encontro_est;
encontro_est = 0;


if ( !cab )
  {
    cout << " no hay salones creados para Adicionar estudiantes"<<endl;
}
else
{
cout <<"\n Digite Codigo  Salon    :    ";
  cin >>cod_sal;
  fflush(stdin);
  nuevo_sal = new(salon);
  nuevo_sal = cab;
  while ( nuevo_sal != NULL && encontro_salon == 0 )
  {
     if ( nuevo_sal->codigo_sal == cod_sal )
     {
      encontro_salon = 1;
nuevo_estudiante = new(estudiante);
      cout << "\n Digite Codigo del Estudiante :  ";
      cin>>nuevo_estudiante->codigo_est;
      fflush(stdin);
      cout << "\n Digite Nombre del Estudiante :  ";
      getline(cin,nuevo_estudiante->nom_estudiante);
      fflush(stdin);
      cout << "\n Digite Nota del Estudiante :  ";
      cin>>nuevo_estudiante->nota;
      fflush(stdin);
     
      nuevo_estudiante->ap_est = NULL;
     
      if ( nuevo_sal->ap_e == NULL )
      {
nuevo_sal->ap_e = nuevo_estudiante;
}
else
{
bus_est1 = new(estudiante);
bus_est2 = new(estudiante);

bus_est1 = nuevo_sal->ap_e;

if (bus_est1->codigo_est >= nuevo_estudiante->codigo_est )
{
if (bus_est1->codigo_est == nuevo_estudiante->codigo_est  )
{
cout <<"\n este codigo ya existe : ";
cout <<"\n Codigo estudiante      : "<<bus_est1->codigo_est;
cout <<"\n Nombre Estudiante : "<<bus_est1->nom_estudiante;
cout <<"\n Nota Estudiante     : "<<bus_est1->nota<<endl;
}
else
{
nuevo_estudiante->ap_est = bus_est1;
nuevo_sal->ap_e = nuevo_estudiante;
}
}
else
{
bus_est2 = bus_est1->ap_est;
while ( bus_est2 != NULL && encontro_est == 0 )
{
  if (bus_est2->codigo_est >= nuevo_estudiante->codigo_est )
{

encontro_est  = 1;
if (bus_est2->codigo_est == nuevo_estudiante->codigo_est  )
{
cout <<"\n este codigo ya existe : ";
cout <<"\n Codigo estudiante      : "<<bus_est2->codigo_est;
cout <<"\n Nombre Estudiante : "<<bus_est2->nom_estudiante;
cout <<"\n Nota Estudiante     : "<<bus_est2->nota<<endl;
}
else
{
nuevo_estudiante->ap_est = bus_est2;
bus_est1->ap_est         = nuevo_estudiante;
}
}
else
{
bus_est1   = bus_est2;
bus_est2   = bus_est2->ap_est;
}
}
if ( encontro_est == 0 )
{
bus_est1->ap_est = nuevo_estudiante;
}
}
}      
}
nuevo_sal = nuevo_sal->ap_s;
}
if ( encontro_salon == 0 )
{
cout <<"\n Salon no se encontro ";
}
cout <<"\n <Enter> para continuar ";
getch();
}
}

void listar_est_general(void)
{

if ( !cab )
  {
    cout << " no hay salones creados para Adicionar estudiantes"<<endl;
}
else
{
  nuevo_sal = new(salon);
  nuevo_sal = cab;
 
  while ( nuevo_sal != NULL  )
  {
  cout<<"\n\n Codigo Salon : "<<nuevo_sal->codigo_sal;
  cout<<"\n Materia :  "<<nuevo_sal->desc_materia;
  cout<<"\n Docente :  "<<nuevo_sal->nom_docente;
 
  nuevo_estudiante = new(estudiante);
  nuevo_estudiante = nuevo_sal->ap_e;
  while ( nuevo_estudiante != NULL )
    {
    cout<<"\n Estudiante codigo  :  "<<nuevo_estudiante->codigo_est;
cout<<"\n Estudiante nombre  :  "<<nuevo_estudiante->nom_estudiante;
cout<<"\n Estudiante nota    :  "<<nuevo_estudiante->nota;

nuevo_estudiante  = nuevo_estudiante->ap_est;
  }
  nuevo_sal = nuevo_sal->ap_s;
  }
}
}



void listar_est_notarepetida(void)
{

do
{

if (!cab)
{
cout << "No hay salones creados para mostrar estudiantes"<<endl;
}
else
{
nuevo_sal = (new salon);
nuevo_sal = cab;

while ( nuevo_sal != NULL)
{
cout<<"\n\n Codigo Salon : "<<nuevo_sal->codigo_sal<<endl;
  cout<<"\n Materia :  "<<nuevo_sal->desc_materia<<endl;
  cout<<"\n Docente :  "<<nuevo_sal->nom_docente<<endl;
 
  bus_est1 = new(estudiante); bus_est2 = new(estudiante);
  bus_est1 = nuevo_sal->ap_e; bus_est2 = bus_est1->ap_est;
 
  while (bus_est1 != NULL)
  {
  if(bus_est1->nota == bus_est2->nota)
  {
  cout<<"\n Estudiante codigo  :  "<<nuevo_estudiante->codigo_est<<endl;
cout<<"Estudiante nombre  :  "<<nuevo_estudiante->nom_estudiante<<endl;
cout<<"Estudiante nota    :  "<<nuevo_estudiante->nota<<endl;
cout<<"Estudiante nota    :  "<<nuevo_estudiante->nota<<endl;
  }
  else
  {
  if(bus_est2 == NULL)
  {
  cout<<"No hay estudiantes con nota repetida en este salon"<<endl;
  }
  else
  {
  bus_est1 = bus_est2;
  bus_est2 = bus_est1->ap_est;
  }
  }

  }
  nuevo_sal = nuevo_sal->ap_s;
}
}
}
while(nuevo_sal != NULL);
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)