0 votos
por (20 puntos) en C/C++
mostrada de nuevo por

Se tiene una lista de simple enlace, el campo dato son objetos Alumno con las variables: nombre, edad, sexo. Escribir una función para transformar la lista de tal forma que si el primer nodo es de un alumno de sexo masculino el siguiente sea de sexo femenino, así alternativamente, siempre que sea posible, masculino y femenino.

Este es el codigo que tengo solo me falta ordenarlo por sexo.

#include <iostream>

#include <stdio.h>

#include <string.h>

using namespace std;

struct nodo_alumno{

string nombre;

int edad;

int sexo;

nodo_alumno *sgte;

};

typedef struct nodo_alumno *alumno;

nodo_alumno *anterior;

void insertar_alumno(alumno &alum, string nom, int ed, int sex);

void mostrar_lista(alumno &alum, int sex);

void menu(){

cout<<"\t\tIngrese la opcion a ejecutar : "<<endl;

cout<<"\t\t\t\t1) Insertar Nodo"<<endl;

cout<<"\t\t\t\t2) Mostrar Lista"<<endl;

cout<<"\t\t\t\t3) Mostrar Lista ORDENADA"<<endl;

cout<<"\t\t\t\t4) Salir"<<endl;

}

void insertar_alumno(alumno &alum, string nom, int ed, int sex){

alumno alumn;

alumn = new (nodo_alumno);

alumn->nombre = nom;

alumn->edad = ed;

alumn->sexo = sex;

alumn->sgte = alum;

alum = alumn;

}

void mostrar_lista(alumno &alum, int sex){

alumno alumn = new (nodo_alumno);

alumno n_alumn = new (nodo_alumno);

int cont = 0;

int sexo;

while(alum!=NULL){

if(alum->sexo==1){

cout<<""<<' '<<cont+1<<"- "<<alum->nombre<<" Edad: "<<alum->edad<<" Sexo: "<<" Femenino"<<endl;

alum = alum->sgte;

cont++;

}

else if (alum->sexo==2)

{

cout<<""<<' '<<cont+1<<"- "<<alum->nombre<<" Edad: "<<alum->edad<<" Sexo: "<<" Masculino"<<endl;

alum = alum->sgte;

cont++;

}

}

}

int main(){

alumno al= NULL;

int opc;

string nomb;

int anio;

int sex;

do{

menu();

cin>>opc;

switch(opc){

case 1:

cout<<"Nombre: ";

cin>>nomb;

cout<<"Edad.: ";

cin>>anio;

cout<<"Sexo (1-F 2-M): "<<endl;

cin>>sex;

if((sex!=1)&&(sex!=2))

{

cout<<"\nEl sexo Debe Ser Igual a F o M"<<endl;

cout<<"Sexo.: ";

cin>>sex;

}

else

insertar_alumno(al,nomb,anio,sex);

break;

case 2:

cout<<"--------------------------------------------------------"<<endl;

mostrar_lista(al,sex);

break;

case 3:

break;

}

cout<<endl<<endl;

system("pause");

}

while(opc!=4);

return 0;

}

cerrada con la nota: la resolvi

Preguntas relacionadas

0 votos
5 respuestas
0 votos
0 respuestas
preguntado por jeremias10 (760 puntos) Ene 28, 2016 en C/C++
0 votos
1 respuesta
0 votos
0 respuestas
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...