Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2015, 14:04
Deaniz
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años
Puntos: 0
Programacion C++, struct a clases

Hola, buenas tardes, quisiera saber si me podrían ayudar,
hice un programa con struct, pero mi maestra al ultimo momento dijo que lo quería con clases, el problema es que no se como pasar mi programa a clases, alguien me podría orientar o ayudar porfavor?

Este es mi programa.
//****************************//

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<conio.h>
#include <iostream>
using namespace std;

typedef struct dato nodo;

nodo* crear_lista(nodo* lista);
nodo* ingresar_dato(char* nombre, int boleta, nodo* lista);

void mostrar_lista(nodo* lista);
void mostrar_nodo(nodo* elemento);
void menu(void);

void borrar_lista(nodo* lista);
nodo* borrar_nodoxnombre(char *nombre, nodo* lista);
nodo* borrar_nodoxnota(int boleta, nodo* lista);

nodo* buscar_nodo(nodo* lista, char *caracter);
void ordenar_lista(nodo* lista);



struct dato
{
char nombre[80];
int nota;
struct dato *sig;
};

nodo* crear_lista(nodo* lista)
{
return (lista = NULL);
}

nodo* ingresar_dato(char* nombre, int boleta, nodo* lista)
{
nodo *nuevo_dato;
nodo *auxiliar = NULL;

nuevo_dato = (nodo*)malloc(sizeof(nodo));

if(nuevo_dato != NULL)
{
strcpy((nuevo_dato->nombre), nombre);
nuevo_dato->nota = boleta;
nuevo_dato->sig = NULL;

if(lista == NULL)
lista = nuevo_dato;
else
{
auxiliar = lista;
while(auxiliar->sig != NULL)
auxiliar = auxiliar->sig;
auxiliar->sig = nuevo_dato;
}
}
else
cout<<"\n\nNo se pudo reservar memoria\n\n";
return lista;
}

void mostrar_lista(nodo* lista)
{
nodo *auxiliar;
int contador = 0;

if(lista == NULL)
cout<<"\n\nLa lista esta vacia\n\n";

auxiliar = lista;
while(auxiliar != NULL)
{
cout<<"\n\nPersona"<<(contador+1);
cout<<"\nNombre y Apellido: "<<auxiliar->nombre;
cout<<"\n\nBoleta: "<< auxiliar->nota;
contador++;

auxiliar = auxiliar->sig;
}
cout<<"\nFin de lista\n\n";
}

void borrar_lista(nodo* lista)
{
nodo *borra;

borra = lista;
while(borra)
{
lista = lista->sig;
free(borra);
borra = lista;
}
}

void menu(void)
{

cout<<"\n\nLista_Practica_3 3CM7:\n\n";
cout<<"1) Ingresar dato\n";
cout<<"2) Mostrar lista\n";
cout<<"3) Borrar lista\n";
cout<<"4) Borrar por nombre\n";
cout<<"5) Borrar por boleta\n";
cout<<"6) Buscar en lista\n";
cout<<"7) Ordenar lista\n";
cout<<"0)SALIR\n\n";


}

nodo* borrar_nodoxnombre(char *nombre, nodo* lista)
{
if(lista != NULL)
{
nodo *ptraux;
nodo *ptranterior = NULL;
int cont;

ptraux = lista;
while(ptraux != NULL && (strcmp(ptraux->nombre, nombre) != 0))
{
ptranterior = ptraux;
ptraux = ptraux->sig;
cont++;
}
if(cont == 1 && ptraux->sig == NULL)
{
free(ptraux);
lista = NULL;
}
if(ptraux == NULL)
cout<<"\n\nNo se encontro una persona con ese nombre\n\n";
else if(ptranterior == NULL)
{
lista = lista->sig;
free(ptraux);
}
else
{
ptranterior->sig = ptraux->sig;
free(ptraux);
}
}

return lista;
}

nodo* borrar_nodoxnota(int boleta, nodo* lista)
{
if(lista != NULL)
{
nodo *ptraux;
nodo *ptranterior = NULL;
int cont = 0;

ptraux = lista;
while(ptraux != NULL && ptraux->nota != boleta)
{
ptranterior = ptraux;
ptraux = ptraux->sig;
cont++;
}
if(cont == 1 && ptraux->sig == NULL)
{
free(ptraux);
lista = NULL;
}
if(ptraux == NULL)
cout<<"\n\nNo se encontro una persona con ese numero de boleta\n\n";
else if(ptranterior == NULL)
{
lista = lista->sig;
free(ptraux);
}
else
{
ptranterior->sig = ptraux->sig;
free(ptraux);
}
}

return lista;
}

nodo* buscar_nodo(nodo* lista, char *caracter)
{
nodo *aux;
char noabuscar[20];
char a[] = "a";
char b[] = "b";
int nabuscar;
if(lista != NULL)
{
if(strcmp(caracter,a) == 0)
{
cout<<"\n\nIngrese el nombre a buscar: ";
fflush(stdin);
fgets(noabuscar, 20, stdin);
aux = lista;
while(aux != NULL)
{
if(strcmp(aux->nombre, noabuscar) == 0)
return aux;
aux = aux->sig;
}
return aux;
}
else if(strcmp(caracter,b) == 0)
{
cout<<"\n\nIngrese la nota a buscar: ";
fflush(stdin);
cout<<nabuscar;
aux = lista;
while(aux != NULL)
{
if(aux->nota == nabuscar)
return aux;
aux = aux->sig;
}
return aux;
}
else
{
cout<<"\n\nOpcion no valida\n\n";
return 0;
}
}
}

void mostrar_nodo(nodo* elemento)
{
nodo* nodoencontrado;
nodoencontrado = elemento;
if(nodoencontrado == NULL)
cout<<"\n\nNo se obtuvieron resultados\n\n";


else
{
cout<<"\n\nNodo encontrado:\n\n";
cout<<"\nNompre y apellido:"<< nodoencontrado->nombre;
cout<<"\nBoleta: "<< nodoencontrado->nota;

}
}
/* \n\n\n\n */

void ordenar_lista(nodo* lista)
{
nodo *anterior;
nodo *siguiente;
nodo temp;

anterior = lista;

while(anterior->sig != NULL)
{
siguiente = anterior->sig;

while(siguiente != NULL)
{
if(strcmp(anterior->nombre, siguiente->nombre) > 0)
{
strcpy(temp.nombre, siguiente->nombre);
temp.nota = siguiente->nota;
strcpy(siguiente->nombre, anterior->nombre);
siguiente->nota = anterior->nota;
strcpy(anterior->nombre, temp.nombre);
anterior->nota = temp.nota;
}
siguiente = siguiente->sig;
}
anterior = anterior->sig;
siguiente = anterior->sig;
}
cout<<"\n\nLista ordenada\n\n";


}

int main(int argc, char** argv)
{
nodo *inicio;
nodo *nodobuscado;
char nom[20];
char nomaborrar[20];
int nborrar;
int nota, i, cant, op;
char s[2];

inicio = crear_lista(inicio);

menu();
cin>>op;
while(op != 0)
{
switch(op)
{
case 1: cout<<"\n\nQue cantidad de datos ingresara: ";
cin>>cant;
cout<<"\n\n";

cout<<"Ingreso de datos:\n\n";
for(i=0 ; i < cant ; i++)
{
cout<<"Nombre y apellido: ";
fflush(stdin);
fgets(nom, 80, stdin);
cout<<"\nBoleta: ";
fflush(stdin);
cin>>nota;
cout<<"\n\n";
inicio = ingresar_dato(nom, nota, inicio);
}
break;

case 2: mostrar_lista(inicio);
break;

case 3: borrar_lista(inicio);
free(inicio);
cout<<"\n\nLista Borrada\n\n";
inicio = NULL;
break;

case 4: cout<<"\n\nIngrese el nombre a borrar\n\n";
fflush(stdin);
fgets(nomaborrar, 80, stdin);
inicio = borrar_nodoxnombre(nomaborrar, inicio);
break;

case 5: cout<<"\n\nIngrese la nota a borrar\n\n";
fflush(stdin);
cin>>nborrar;
inicio = borrar_nodoxnota(nborrar, inicio);
break;

case 6: cout<<"\n\n('a') para buscar por nombre || ('b') para buscar por nota\n\n";
fflush(stdin);
fgets(s, 2, stdin);
nodobuscado = buscar_nodo(inicio, s);
mostrar_nodo(nodobuscado);
break;

case 7: ordenar_lista(inicio);
break;



default: cout<<"\n\n Este no es una opcion, intentelo nuevamente// \n\n";
}
getch();
system("cls");
menu();
cin>>op;
}


return (EXIT_SUCCESS);
}