Hola soy un principiante y bueno es la primera vez que entro en el foro, y quisiera saber si alguien me ayuda con esto.
veran esta es una lista simple que almacenara tareas, y esas tareas tienen una hora (que es el tiempo que la persona tarda en hacer la tarea) y ganancia (el dinero que obtiene el vendedor de la tienda cuando la hace)
buenoe le nunciado de mi tarea dice que el encargado hara primero la tarea que tenga mayor ganancia , si la ganacia es igual a la de otra tarea entonces hara primero la que tenga mayor hora, y si las horas de ambas tarea tambien son iguales entonces primera irá la la que apareció antes en la lista.
y bueno mas o menos funciona mi codigo pero hay casos de prueba que fallan:
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)
Código C++:
Ver originalvoid 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;
}
}