Dev - C++ - Clases en Dev C++

 
Vista:

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;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Clases en Dev C++

Publicado por pedro conga (1 intervención) el 13/06/2007 23:16:03
NO MOLESTE, ESTUDIE QUE PASO VA A LA UNIVERSIDAD...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clases en Dev C++

Publicado por Morpheus (1 intervención) el 03/09/2007 15:51:21
se ve bien estructurade el sistema pero tiene un error por que cuando le ingreso el numero del estudiante se cierra el programa.

bueno te mando saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clases en Dev C++

Publicado por Arn (1 intervención) el 16/06/2008 03:30:15
hola, en lo unico que te puedo ayudar es decirte que te falta un break; en el primer switch case, en el default.

Después de ahí funciona bien hasta pedirte el codigo del estudiante, luego se sale, si logra arreglar esto, no olvides en postearlo aquí ;p suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clases en Dev C++

Publicado por jhoselis (1 intervención) el 21/05/2009 19:45:32
q funcion cumple el CIN y el COUT en dev c ++?? ayudaa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clases en Dev C++

Publicado por jonathan cruz  (1 intervención) el 09/12/2010 06:31:53
saludos amigo aqui lo unico que tienes que modificar es el nombre de las librerias
Esto:
#include"iostream" //ESTO
#include"conio.h" //SON
#include"stdlib.h" //LIBRERIAS ESTATICAS PORQUE LLEVAN "LIBRERIA"(DOBLE #include"stdio.h" //COMILLAS EN LA LIBRERIA )

Por esto:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>

ESPERO QUE TE ALLA SERVIDO CUALQUIER COSA ME AVISAS SALUDOS Y

"SEGUID HAMBRIENTO, SEGUID ALOCADO" STEVE JOBS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar