Ver Mensaje Individual
  #15 (permalink)  
Antiguo 15/01/2016, 04:14
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Necesito orientacion con el siguiente codigo

Cita:
Iniciado por acknowledge Ver Mensaje
yo lo que proponia es hacer un camino totalmente aleatorio y si el camino se cruza empezar de nuevo asì se escribe menos codigo (y es super ineficiente), si llega al final de casualidad calcular el valor.
Hombre, calculando ruta al azar podrías ahorrarte en mi programa digamos... unas 17 líneas (contando comentarios, líneas en blanco y llaves, que las suelo poner en línea independiente)... porque claro tienes que añadir la lógica para generar los aleatorios (20 líneas de código a eliminar - 1 para inicializar random - 1 para generar desplazamiento X - 1 para generar desplazamiento Y).

Creo que el ahorro en líneas tampoco es excesivo aunque en términos estrictos debo darte la razón en todo:

SI son menos líneas
SI es muuuucho más ineficiente jejeje

Cita:
Iniciado por aguml Ver Mensaje
Cuando digo que parece usarlo como función me refiero a esto que haces:
variable1(a)
En tu caso variable1 es un int pero esa línea yo la interpreto como:
int variable1 (int a)
A eso me refiero y no lo entiendo. Supongo que será algo que no he dado aun y que tendrá que ver con herencias o cosas de esas pero para mi un nombre con un paréntesis tal y como aparece, hasta donde yo llego es una función.
Echa un vistazo al siguiente ejemplo:

La clase Variable saca por pantalla varios mensajes cuando se llama a sus diferentes funciones.

Después creamos dos clases Clase1 y Clase2. La primera inicializa su instancia de Variable con una asignación, mientras que Clase2 usa los inicializadores en el constructor.

Código C++:
Ver original
  1. struct Variable
  2. {
  3.    Variable(){ std::cout << "Variable::Variable()" << std::endl; }
  4.  
  5.    Variable(int valor)
  6.    { std::cout << "Variable::Variable(int)" << std::endl; }
  7.  
  8.    void operator=(int valor)
  9.    { std::cout << "Variable::operator=()" << std::endl; }
  10. };
  11.  
  12. class Clase1
  13. {
  14.    Variable v;
  15.   public:
  16.     Clase1()
  17.     {
  18.       v = 5;
  19.     }
  20. };
  21.  
  22. class Clase2
  23. {
  24.    Variable v;
  25.  
  26.   public:
  27.     Clase2()
  28.       : v(5)
  29.     {
  30.     }
  31. };
  32.  
  33. int main()
  34. {
  35.   std::cout << "Clase1 llama a dos funciones" << std::endl;
  36.   Clase1 c1;
  37.  
  38.   std::cout << std::endl;
  39.   std::cout << "Clase2 unicamente llama a una funcion" << std::endl;
  40.   Clase2 c2;
  41.   std::cout << std::endl;
  42. }

El resultado es claro. Si se hacen asignaciones se acaban ejecutando dos funciones (constructor por defecto y operador de asignación), mientras que si usamos los inicializadores únicamente se hace una llamada al constructor que corresponda. Esta segunda opción suele ser más eficiente al usar clases ya que aparte de ahorrarnos la llamada a una función nos podemos ahorrar pasos innecesarios (como inicializar una variable a 0 en el constructor por defecto para un instante después asignarle un valor diferente con el operador de asignación).

Espero que te haya quedado este punto más claro con el ejemplo.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Última edición por eferion; 15/01/2016 a las 04:27