Hola chic@s!!!
Primero de todo agradecer de nuevo a durasno, maxim_o, STANHMAL y ferno por vuestra ayuda (gracias tambien a STANHMAL por indicarme otros errores y pasarme el link, ya q para la gente q estamos empezando es una buena ayuda). Bueno esta tarde a las 2:00 di con el problema pero me tuve q ir de casa, asike paso a indicarosle por si stais interesados,jejeje.(Por cierto el codigo es una mezcla de C y C++ como habeis dicho, pero esque me compre un libro para empezar que es bastante bueno, y explica junto el C y C++ y segun el libro lo de C te vale para C++ asike siempre guardo como .cpp)
SOLUCION DEL PROBLEMAEl problema esta en la linea "x = auxiliar;" (como dijo STANHMAL) que en principio no da ERROR ya que "auxiliar" si es un array pero "x" es una direccion de memoria y lo que hace es asignarle la direccion de memoria del primer elemento de "auxiliar" a "x". Cual es el problema, las direcciones de memoria. Al llamar a la funcion la paso como parametro "producto" cuya posicion es ABCF001 y se la asigna a "x", luego la posicion de "x" es ABCF001. Posteriormente se crea el array "auxiliar[ELEM]" cuya direccion de memoria del primer elemento (escribiendo "auxiliar") es CDEF005. Despues hago todo bien, peeeeero llegamos a "x = auxiliar;"
sin haber cambiado nada en "x", y por tanto no he cambiado nada en "producto", y al hacer "x = auxiliar;" la "x" pasa a valer CDEF005. Por lo que justo antes de retornar a main, tenemos:
auxiliar => Direccion: CDEF005 => array con el elemento bien eliminado
x => Direccion: CDEF005 => apunta a "auxiliar" luego apunta al array con el elemento bien eliminado
producto => Direccion: ABCF001 => array que en ningun momento se modifico, ya que o le tenia que haber modificado antes de "x = auxiliar;" o sino tenia q tener actualmente la direccion CDEF005
Espero se me haya entendido
Por lo tanto, uso el bucefor. Ya dije desde el principio que el programa funcionaba con el bucle, pero solo estaba interesado en entender el problema de porque no funcionaba de la otra forma. Ahora ya sta todo claro.
NOTASFerno
Estaba casi convencido cuando lei tu mensaje que funcionaria tal y como tu decias, ya que ya entendia el problema q tenia yo primero y tu solucion me parecia buena, pero fui a compilar y me dio ERROR, este era:
"In function 'void eliminar(Producto*, int&)':
non-Ivalue in assignment"
que si alguien sabe lo que significa que me lo explike, q stoy aprendiendo!!!!jejeje
Saludos a todos!!!