Clases en Dev C++
Publicado por Yeisson Pedreros (1 intervención) el 14/10/2006 02:21:54
Estoy realizando un programa con clases para el almacenamiento de una lista de estudiantes con ciertos datos, el problema es que cuando lo estoy compilando aparece el siguiente error "Violacion de un acceso a memoria (fallo de segmentacion) ocurrio en tu programa" lo he revisado pero la verdad no se que es lo que la sobra o le hace falta, anexo el codigo para que por favor me puedan enviar respuesta sobre esto. Muchas gracias.
#include"iostream"
#include"conio.h"
#include"stdlib.h"
#include"stdio.h"
using namespace std;
class Nodo
{ Nodo*enlace;
char*nombre,*asignatura;
long int codigo;
int grupo;
float nota1,nota2,nota3,examen,definitiva;
public:
void crear_lista(Nodo*&);
void datos(Nodo*&);
void insertar(Nodo*&);
void mostrar(Nodo*&);
int verificar(Nodo*&);
void buscar(Nodo*&);
void agregar_nodo_inicio(Nodo*&);
};
int main()
{ Nodo*cabeza,objeto;
int opcion=0;
cabeza=NULL;
while(opcion>=0)
{ system("cls");
cout<<"Digite la opcion a realizar;\n";
cout<<"1. insetar estudiante:\n";
cout<<"2. Ver la definitiva de los estudiantes \n";
cout<<"3. Ver los datos de un estudiante\n";
cout<<"4. Agregar un estudiante al inicio de la lista\n";
cout<<"5. Salir\n";
cin>>opcion;
switch(opcion)
{ case 1:objeto.insertar(cabeza);break;
case 2:objeto.mostrar(cabeza);break;
case 3:objeto.buscar(cabeza);break;
case 4:objeto.agregar_nodo_inicio(cabeza);break;
case 5:exit(0);break;
default:cout<<"Opcion incorrecta, intente de nuevo.";getch();
}
}
getch();
}
void Nodo::insertar(Nodo*&cabeza)
{ int resul;
Nodo*aux=cabeza;
if(cabeza==NULL)
{ cout<<"No hay lista creada, ingrese datos para el primer estudiante:\n";
crear_lista(cabeza);
cout<<"lista creada.";
}
else
{ resul=verificar(cabeza);
if(resul!=1)
{ while(aux->enlace!=NULL)
aux=aux->enlace;
aux->enlace=new Nodo;
aux=aux->enlace;
aux->enlace=NULL;
datos(aux);
}
}
}
void Nodo::crear_lista(Nodo*&cabeza)
{ cabeza=new Nodo;
cabeza->enlace=NULL;
datos(cabeza);
}
void Nodo::datos(Nodo*&nodo)
{ cout<<"\nDigite codigo del estudiante : \t";
cin>>nodo->codigo;
cout<<"\nDigite nombre : \t";
gets(nodo->nombre);
cout<<"\nDigite grupo : \t";
cin>>nodo->grupo;
cout<<"\nDigite asignatura : \t";
gets(nodo->asignatura);
cout<<"\nDigite nota 1 : \t";
cin>>nodo->nota1;
cout<<"\nDigite nota 2 : \t";
cin>>nodo->nota2;
cout<<"\nDigite nota 3 : \t";
cin>>nodo->nota3;
cout<<"\nDigite examen : \t";
cin>>nodo->examen;
nodo->definitiva=(nodo->nota1+nodo->nota2+nodo->nota3+nodo->examen)/4;
cout<<"\nLa nota definitiva del estudiante es:\t"<<nodo->definitiva;
getch();
}
void Nodo::mostrar(Nodo*&cabeza)
{ Nodo*aux=cabeza;
int posicion=1;
while(aux!=NULL)
{ cout<<posicion<<"\t"<<aux->codigo<<"\t"<<aux->nombre<<"\t"<<aux->definitiva<<"\n";
aux=aux->enlace;
posicion++;
}
getch();
}
int Nodo::verificar(Nodo*&cabeza)
{ Nodo*aux=cabeza;
long int cod;
cout<<"Digite el codigo del estudiante que desea ingresar \n";
cin>>cod;
while((aux->codigo!=cod)&&(aux!=NULL))
aux=aux->enlace;
if(aux->codigo==cod)
{ cout<<"El estudiante ya esta en la lista.";
getch();
return(1);
}
else
return(0);
}
void Nodo::buscar(Nodo*&cabeza)
{ Nodo*aux=cabeza;
long int cod;
cout<<"Digite el codigo del estudiante que desea buscar \n";
cin>>cod;
while((aux->codigo!=cod)&&(aux!=NULL))
aux=aux->enlace;
if(aux->codigo==cod)
{ system("cls");
cout<<"El estudiante es: \n";
cout<<"codigo......\t"<<aux->codigo<<endl;
cout<<"nombre......\t"<<aux->nombre<<endl;
cout<<"grupo.......\t"<<aux->grupo<<endl;
cout<<"asignatura..\t"<<aux->asignatura<<endl;
cout<<"nota 1......\t"<<aux->nota1<<endl;
cout<<"nota 2......\t"<<aux->nota2<<endl;
cout<<"nota 3......\t"<<aux->nota3<<endl;
cout<<"examen......\t"<<aux->examen<<endl;
cout<<"definitiva..\t"<<aux->definitiva<<endl;
getch();
}
else
cout<<"El estudiante no se encuantra en la lista";
}
void Nodo::agregar_nodo_inicio(Nodo*&cabeza)
{ int resul;
Nodo*aux=NULL;
resul=verificar(cabeza);
if(resul!=1)
{ aux=new Nodo;
datos(aux);
aux->enlace=cabeza;
cabeza=aux;
}
}
#include"iostream"
#include"conio.h"
#include"stdlib.h"
#include"stdio.h"
using namespace std;
class Nodo
{ Nodo*enlace;
char*nombre,*asignatura;
long int codigo;
int grupo;
float nota1,nota2,nota3,examen,definitiva;
public:
void crear_lista(Nodo*&);
void datos(Nodo*&);
void insertar(Nodo*&);
void mostrar(Nodo*&);
int verificar(Nodo*&);
void buscar(Nodo*&);
void agregar_nodo_inicio(Nodo*&);
};
int main()
{ Nodo*cabeza,objeto;
int opcion=0;
cabeza=NULL;
while(opcion>=0)
{ system("cls");
cout<<"Digite la opcion a realizar;\n";
cout<<"1. insetar estudiante:\n";
cout<<"2. Ver la definitiva de los estudiantes \n";
cout<<"3. Ver los datos de un estudiante\n";
cout<<"4. Agregar un estudiante al inicio de la lista\n";
cout<<"5. Salir\n";
cin>>opcion;
switch(opcion)
{ case 1:objeto.insertar(cabeza);break;
case 2:objeto.mostrar(cabeza);break;
case 3:objeto.buscar(cabeza);break;
case 4:objeto.agregar_nodo_inicio(cabeza);break;
case 5:exit(0);break;
default:cout<<"Opcion incorrecta, intente de nuevo.";getch();
}
}
getch();
}
void Nodo::insertar(Nodo*&cabeza)
{ int resul;
Nodo*aux=cabeza;
if(cabeza==NULL)
{ cout<<"No hay lista creada, ingrese datos para el primer estudiante:\n";
crear_lista(cabeza);
cout<<"lista creada.";
}
else
{ resul=verificar(cabeza);
if(resul!=1)
{ while(aux->enlace!=NULL)
aux=aux->enlace;
aux->enlace=new Nodo;
aux=aux->enlace;
aux->enlace=NULL;
datos(aux);
}
}
}
void Nodo::crear_lista(Nodo*&cabeza)
{ cabeza=new Nodo;
cabeza->enlace=NULL;
datos(cabeza);
}
void Nodo::datos(Nodo*&nodo)
{ cout<<"\nDigite codigo del estudiante : \t";
cin>>nodo->codigo;
cout<<"\nDigite nombre : \t";
gets(nodo->nombre);
cout<<"\nDigite grupo : \t";
cin>>nodo->grupo;
cout<<"\nDigite asignatura : \t";
gets(nodo->asignatura);
cout<<"\nDigite nota 1 : \t";
cin>>nodo->nota1;
cout<<"\nDigite nota 2 : \t";
cin>>nodo->nota2;
cout<<"\nDigite nota 3 : \t";
cin>>nodo->nota3;
cout<<"\nDigite examen : \t";
cin>>nodo->examen;
nodo->definitiva=(nodo->nota1+nodo->nota2+nodo->nota3+nodo->examen)/4;
cout<<"\nLa nota definitiva del estudiante es:\t"<<nodo->definitiva;
getch();
}
void Nodo::mostrar(Nodo*&cabeza)
{ Nodo*aux=cabeza;
int posicion=1;
while(aux!=NULL)
{ cout<<posicion<<"\t"<<aux->codigo<<"\t"<<aux->nombre<<"\t"<<aux->definitiva<<"\n";
aux=aux->enlace;
posicion++;
}
getch();
}
int Nodo::verificar(Nodo*&cabeza)
{ Nodo*aux=cabeza;
long int cod;
cout<<"Digite el codigo del estudiante que desea ingresar \n";
cin>>cod;
while((aux->codigo!=cod)&&(aux!=NULL))
aux=aux->enlace;
if(aux->codigo==cod)
{ cout<<"El estudiante ya esta en la lista.";
getch();
return(1);
}
else
return(0);
}
void Nodo::buscar(Nodo*&cabeza)
{ Nodo*aux=cabeza;
long int cod;
cout<<"Digite el codigo del estudiante que desea buscar \n";
cin>>cod;
while((aux->codigo!=cod)&&(aux!=NULL))
aux=aux->enlace;
if(aux->codigo==cod)
{ system("cls");
cout<<"El estudiante es: \n";
cout<<"codigo......\t"<<aux->codigo<<endl;
cout<<"nombre......\t"<<aux->nombre<<endl;
cout<<"grupo.......\t"<<aux->grupo<<endl;
cout<<"asignatura..\t"<<aux->asignatura<<endl;
cout<<"nota 1......\t"<<aux->nota1<<endl;
cout<<"nota 2......\t"<<aux->nota2<<endl;
cout<<"nota 3......\t"<<aux->nota3<<endl;
cout<<"examen......\t"<<aux->examen<<endl;
cout<<"definitiva..\t"<<aux->definitiva<<endl;
getch();
}
else
cout<<"El estudiante no se encuantra en la lista";
}
void Nodo::agregar_nodo_inicio(Nodo*&cabeza)
{ int resul;
Nodo*aux=NULL;
resul=verificar(cabeza);
if(resul!=1)
{ aux=new Nodo;
datos(aux);
aux->enlace=cabeza;
cabeza=aux;
}
}
Valora esta pregunta


0