Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/11/2014, 10:42
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Insertar elemento en lista ordeanda

Dos cosas:

Código C++:
Ver original
  1. nodo2 = buscar (lista, elemento);

Si estás escribiendo siempre en el último nodo es porque esa función no está funcionando como es debido.

Código C++:
Ver original
  1. printf("Ingrese el DNI a modificar: \n");
  2. scanf ("%d", &elemento.DNI);
  3.            
  4. /*Buscar elemento*/
  5. nodo2 = buscar (lista, elemento);
  6.            
  7. /*Modificar nodo*/
  8. printf("Ingrese el nuevo valor del DNI (Si lo quiere dejar igual ponga el mismo): \n");
  9. scanf ("%d", &elemento2.DNI);
  10. printf("Ingrese el nuevo valor de la Edad (Si lo quiere dejar igual ponga el mismo): \n");
  11. scanf ("%d", &elemento2.Edad);
  12. printf("Ingrese el nuevo valor del Promedio (Si lo quiere dejar igual ponga el mismo): \n");
  13. scanf ("%f", &elemento2.PromedioCalif);
  14.  
  15. nodo2 = modificarElemento(nodo2, elemento2);

¿Por qué usas un nodo temporal? Es algo que te puedes ahorrar:

Código C++:
Ver original
  1. int dni;
  2. printf("Ingrese el DNI a modificar: \n");
  3. scanf ("%d", &dni);
  4.            
  5. /*Buscar elemento*/
  6. nodo2 = buscar (lista, dni); // Ahora el segundo parámetro de la función es un int
  7.            
  8. /*Modificar nodo*/
  9. printf("Ingrese el nuevo valor del DNI (Si lo quiere dejar igual ponga el mismo): \n");
  10. scanf ("%d", &nodo2->DNI);
  11. printf("Ingrese el nuevo valor de la Edad (Si lo quiere dejar igual ponga el mismo): \n");
  12. scanf ("%d", &nodo2->Edad);
  13. printf("Ingrese el nuevo valor del Promedio (Si lo quiere dejar igual ponga el mismo): \n");
  14. scanf ("%f", &nodo2->PromedioCalif);
  15.  
  16. //nodo2 = modificarElemento(nodo2, elemento2); Esta llamada sobra