trabajo con visual studio 2015 el problema es que al imprimir los datos estos no se muestran solo se muestra caracteres sin sentido por favor ayúdenme :-( :-( :-(
pdt : ignoren la funcion burbuja trataba de ordenar la lista simpre por ese metodo seleccionado ponderado pero creo que solo muevo el dato y no todos xD :xD :xD :xD :xD
#include<iostream>
#include<string.h>
using namespace std;
class Estudiante {
public:
	char codigo[5];
	string nombre;
	float poderado;
	Estudiante* siguiente;
	Estudiante( char* cod, string nom,float pode ) {
		
		cod=codigo;
		nom =nombre;
		pode = poderado;
		siguiente = NULL;
	}
};
class NodoSimple {
public:
	Estudiante* cabeza;
	NodoSimple() {
		cabeza = NULL;
	}
	void insertar(char* cod, string nom, float pode) {
		Estudiante * nuevo = new Estudiante(cod, nom, pode);
		if (!cabeza) {
			cabeza = nuevo;
		}
		else {
			nuevo->siguiente = cabeza;
			cabeza = nuevo;
		}
	}
	void imprimirburbuja() {
		float t;
		Estudiante* aux = cabeza;
		while (cabeza->siguiente)
		{
			aux = cabeza->siguiente;
			while (aux)
			{
				if (cabeza->poderado>aux->poderado) {
					t = aux->poderado;
					aux->poderado = cabeza->poderado;
					cabeza->poderado = t;
				}
				aux = aux->siguiente;
			}
			cabeza = cabeza->siguiente;
			aux = cabeza->siguiente;
		}
	}
	void imprimir() {
		Estudiante* aux = cabeza;
		while (aux)
		{
		
				cout << "listade alumnos" << endl;
				cout << aux->codigo << endl;
				cout << aux->nombre.c_str() << endl;
				cout << aux->poderado << endl;
				aux = aux->siguiente;
			
		}
		cout <<"-----------------------------"<< endl;
	}
};
int main() {
	NodoSimple milista;
	milista.insertar("asas", "carlos", 18);
	milista.insertar("asss", "lucas", 11);
	milista.insertar("aaaa", "mateo", 10);
	milista.insertar("asss", "marcos", 8);
	milista.imprimir();
	system("pause");
}
			
			
			
				Sólo he llegado hasta la clase <Estudiante> pero ya te puedo decir que el error (o al menos uno de ellos) está en el constructor.
class Estudiante{
    public:
        char codigo[5];
        string nombre;
        float poderado;
        Estudiante* siguiente;
        
        Estudiante( char* cod, string nom,float pode ){
            cod=codigo; // esta al reves
            nom =nombre; // esta al reves
            pode = poderado; // esta al reves
            siguiente = NULL;
        }
}; 
Cada objeto de la clase <Estudiante> tiene 4 datos miembros que son: <codigo>, <nombre>, <poderado> y <siguiente>. Los datos miembros no son <cod>, <nom> y <pode>. Estos últimos son los nombres que tendrán los parámetros del constructor mientras este se ejecuta. Estos nombres son temporales y en cada función pueden tener nombres distintos.
Aparte de eso cuidado al guardar el código. Para "copiar" cadenas de tipo C (o dicho de otra manera, arrays de <char>) debes usar métodos como <strcpy()> o más recomendable <strncpy()>. No vale con usar el operador de igual =.
			
			
			
				ok muchísimas gracias  ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
			
			
			
				Cita de: YreX-DwX en 22 Septiembre 2019, 19:24 PM
Sólo he llegado hasta la clase <Estudiante> pero ya te puedo decir que el error (o al menos uno de ellos) está en el constructor.
class Estudiante{
    public:
        char codigo[5];
        string nombre;
        float poderado;
        Estudiante* siguiente;
        
        Estudiante( char* cod, string nom,float pode ){
            cod=codigo; // esta al reves
            nom =nombre; // esta al reves
            pode = poderado; // esta al reves
            siguiente = NULL;
        }
}; 
Cada objeto de la clase <Estudiante> tiene 4 datos miembros que son: <codigo>, <nombre>, <poderado> y <siguiente>. Los datos miembros no son <cod>, <nom> y <pode>. Estos últimos son los nombres que tendrán los parámetros del constructor mientras este se ejecuta. Estos nombres son temporales y en cada función pueden tener nombres distintos.
Aparte de eso cuidado al guardar el código. Para "copiar" cadenas de tipo C (o dicho de otra manera, arrays de <char>) debes usar métodos como <strcpy()> o más recomendable <strncpy()>. No vale con usar el operador de igual =.
Perdon que interrumpa pero me gustaría saber como trabajas con ese atributo Estudiante* siguiente;
Como sabes cual es su siguiente si creas secuencialmente a los estudiantes A, B y C por ejemplo
estudiante A luego B, C o sea como es que A va a tener a B y B a C,
u otro caso al crear A, B, C este A tendrá a B y C, y B a C y C a NULL, bueno algo asi ;-)
			
 
			
			
				Cita de: Beginner Web en 25 Septiembre 2019, 07:53 AM
Perdon que interrumpa pero me gustaría saber como trabajas con ese atributo Estudiante* siguiente;
Como sabes cual es su siguiente si creas secuencialmente a los estudiantes A, B y C por ejemplo
estudiante A luego B, C o sea como es que A va a tener a B y B a C,
u otro caso al crear A, B, C este A tendrá a B y C, y B a C y C a NULL, bueno algo asi ;-)
Al parecer la función <insertar()> trabaja como si de una pila se tratase. Crea el primer estudiante A y hace <cabeza = A>. Luego crea al estudiante B pero en lugar de hacer:
A->siguiente = B; Lo que hace es:
B->siguiente = cabeza; // en este caso cabeza es A
cabeza = B; Por lo que si inserta los estudiantes A, B, C, D, la lista quedaría de la siguiente manera:
D(cabeza)->C->B->A->NULL 
			 
			
			
				muchas gracias de corazón  ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) esot esta mucho mejor sobro hago las de doblemente enlazadas  
			
			
			
				Cita de: YreX-DwX en 22 Septiembre 2019, 19:24 PM
Sólo he llegado hasta la clase <Estudiante> pero ya te puedo decir que el error (o al menos uno de ellos) está en el constructor.
class Estudiante{
    public:
        char codigo[5];
        string nombre;
        float poderado;
        Estudiante* siguiente;
        
        Estudiante( char* cod, string nom,float pode ){
            cod=codigo; // esta al reves
            nom =nombre; // esta al reves
            pode = poderado; // esta al reves
            siguiente = NULL;
        }
}; 
Cada objeto de la clase <Estudiante> tiene 4 datos miembros que son: <codigo>, <nombre>, <poderado> y <siguiente>. Los datos miembros no son <cod>, <nom> y <pode>. Estos últimos son los nombres que tendrán los parámetros del constructor mientras este se ejecuta. Estos nombres son temporales y en cada función pueden tener nombres distintos.
Aparte de eso cuidado al guardar el código. Para "copiar" cadenas de tipo C (o dicho de otra manera, arrays de <char>) debes usar métodos como <strcpy()> o más recomendable <strncpy()>. No vale con usar el operador de igual =.
si se eso que esta al reves es que no me lo aceptaba me parecio raro probe quitando la cantidad de datos que quiero "[4]" y me permitio hacerlo como es correctamente pero como hago cunado me piden una cantidad fija de datos ? 
			
 
			
			
				Cita de: jorgecotrinax en 30 Septiembre 2019, 04:45 AM
si se eso que esta al reves es que no me lo aceptaba me parecio raro probe quitando la cantidad de datos que quiero "[4]" y me permitio hacerlo como es correctamente pero como hago cunado me piden una cantidad fija de datos ? 
No sé a que te refieres con eso último. Si tienes un constructor con 3 parámetros, cuando crees un objeto, debes hacerlo con 3 parámetros. Si a lo que te refieres es a poder crear objetos pasando 3 parámetros o pasando otro número de parámetros lo que debes hacer es sobrecargar el constructor con otro número de parámetros.
Si no te refieres a eso, intenta explicármelo otra vez de otra forma para que pueda ayudarte. Podrías ponerme cómo lo tenías y qué era lo que no te dejaba o qué es lo que quieres poder hacer. :-X
			
 
			
			
				Cita de: YreX-DwX en 30 Septiembre 2019, 15:38 PM
No sé a que te refieres con eso último. Si tienes un constructor con 3 parámetros, cuando crees un objeto, debes hacerlo con 3 parámetros. Si a lo que te refieres es a poder crear objetos pasando 3 parámetros o pasando otro número de parámetros lo que debes hacer es sobrecargar el constructor con otro número de parámetros.
Si no te refieres a eso, intenta explicármelo otra vez de otra forma para que pueda ayudarte. Podrías ponerme cómo lo tenías y qué era lo que no te dejaba o qué es lo que quieres poder hacer. :-X
esto lo ise a proposito por que me daba error si lo ponia correctamente 
 Estudiante( char* cod, string nom,float pode ){
            cod=codigo; // esta al reves
            nom =nombre; // esta al reves
            pode = poderado; // esta al reves
            siguiente = NULL;
        }al parecer era por la cantidad de datos que puse [5] 
char codigo[5];
lo quite  [5]y me codigo se ejecuto correctamente 
la pregunta como hago para yo elegir la cantidad de datos de cada archivo o debo usar 
solamente uso el tipo de dato correcto al fina solo trato de hacer esto
-> https://drive.google.com/open?id=1LD0zBfxs1FsDMGSTp1th0zlob7P6HxkR
			
 
			
			
				Cita de: jorgecotrinax en 30 Septiembre 2019, 16:07 PM
esto lo ise a proposito por que me daba error si lo ponia correctamente 
 Estudiante( char* cod, string nom,float pode ){
            cod=codigo; // esta al reves
            nom =nombre; // esta al reves
            pode = poderado; // esta al reves
            siguiente = NULL;
        }
al parecer era por la cantidad de datos que puse [5] 
char codigo[5];
lo quite  [5]y me codigo se ejecuto correctamente 
la pregunta como hago para yo elegir la cantidad de datos de cada archivo o debo usar 
solamente uso el tipo de dato correcto al fina solo trato de hacer esto
-> https://drive.google.com/open?id=1LD0zBfxs1FsDMGSTp1th0zlob7P6HxkR
Lo siento pero sigues sin ser específico. Igual soy yo pero sigo sin entender tu duda... pusiste [5], dónde?? :huh: :huh:
Citar
como hago para yo elegir la cantidad de datos de cada archivo
Te refieres al largo de la variable <cod> y <codigo>?? Eso tienes que controlarlo con otra variable. Cuando pasas a esa función el parámetro <cod>, estás pasando la dirección de memoria en la que empieza el código <cod> pero para saber cuándo acaba o cómo de largo es, debes pasar otro parámetro que sea el largo.
Si te da igual lo largo que sea <cod> porque en <codigo> vas a copiar sus X primeros caracteres podrías hacer algo como (de paso te pongo cómo hacer estas cosas sin andar cambiando nombres usando la partícula <this>):
Estudiante(char *codigo, string nombre, float poderado){
    this->nombre = nombre; // this->nombre es el del objeto y nombre solo es el parametro
    this->poderado = poderado;
    this->siguiente = NULL; // se puede omitir pero poniendolo se ve mejor que es un atributo del objeto
    strncpy(this->codigo, codigo, X); // asi copias en this->codigo los X primeros caracteres de codigo
} Si una vez más no he acertado con la interpretación pues bueno, una explicación que te llevas de regalo... :rolleyes: :-X