error with my code of list linked

Hola , Esto Es para un Proyecto de Mi Escuela, se trata de que dada una tarea que tiene hora (que es la hora que lleva hacerla) y ganancia (que es cuento dineor gana al hacerla) entonces va a ir ordenandola, de tal forma que la tarea con mayor ganancia se hara primero (ira de primero) pero si tienen la misma ganacia se compara ahora con la hora, el que tenga mayor hora se hara primero pero si las horas son iguales entonces ira primero la que aparecio antes en la lista.

este es mi cogio y ya he hehco unas pruebas ejemplo:

aaa 2 28
bbb 3 20
ccc 1 10
*
aaa
ccc
bbb

bbb tiene mas ganacia que ccc pero me la coloca de segundo

a 2 14
b 2 30
c 3 5
*
b
c
a

aqui tambien no se que pasa.
donut 4 50
chocolate 1 50
*
donut
chocolate

chocolate 1 50
donut 4 50
*
donut
chocolate

aqui si esta bien ya que tienen la misma ganancia pero como donut tiene mas horas que chocolate la pone de primero

si pueden soluciona este problema se los agradeceria mucho, espero su respuesta .

imprimir , Print my list (is for prove if insertion is correct)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 	void insert3 ( string tarea , int tiempo, int dinero) {
		nodo *n_nuevo;
		n_nuevo = new nodo (tarea, tiempo, dinero );
		n_nuevo ->sig = NULL;
		if (head == NULL){														// ve si es vacia
			head = tail = n_nuevo;
		}else {
			if ( n_nuevo -> ganancia > head->ganancia ){						// si la ganacia es mayor
				n_nuevo -> sig = head;
				head = n_nuevo;
			}else if (n_nuevo ->ganancia == head->ganancia){											// si la ganancia es igual
				if (n_nuevo->hora > head->hora) {  														// si la hora es mayor 
					n_nuevo->sig = head;
					head =n_nuevo;
				}else if (n_nuevo ->hora == head->hora ){										// si las horas son iguales ira despues que la que esta primera 
					n_nuevo->sig =head->sig; 
					head->sig = n_nuevo;
				}else {
						n_nuevo->sig =head ->sig;
						head->sig = n_nuevo;
				}
			}else {
					n_nuevo->sig= head ->sig ;
					head->sig = n_nuevo;
			}
		}				
	}  
	
		void imprimir3() 
		nodo *ptemp ;
		ptemp = new nodo ();
		ptemp= head ;
		if (head ==NULL)
		{
			cout<< "vacia"<<endl;
		}
		
		while (ptemp!=NULL){
			cout<<ptemp->name <<endl;
			ptemp=ptemp->sig;
		}
	}
Is there a C++ book or group in Spanish? That's your best bet or perhaps ask a friend interpret this to English for you.
No, not problem, I understand almost the english, and I have the traductor and a dictionary with me :) . only need to know, why is the problem with my code..
Topic archived. No new replies allowed.