elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda referenciar una matriz desde un objeto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda referenciar una matriz desde un objeto  (Leído 816 veces)
teamanare

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Duda referenciar una matriz desde un objeto
« en: 25 Mayo 2014, 16:06 pm »

Buenas a todos!

Tengo el siguiente problemilla en un ejercicio de C++:

Quiero crear una matriz que esté formada por un numero de filas y columas y una variable contenidoMatriz[][] en la cual voy guardando
todo el contenido de la misma.También en la clase "Matriz", hay operaciones a realizar en la matriz.

El contenido de cada elemento de la matriz son objetos de la clase "Elemento".
A su vez, la clase "Elemento" tiene 2 hijas (que son los valores verdaderos de la matriz), "CeldaInteger" y "CeldaSumar".


"CeldaInteger" son celdas que tienen un número entero.

"CeldaSumar" son celdas que tienen un string, que representa el rango de filas o columnas a sumar(solo un rango).

  Ejemplo de "CeldaSumar":
      - "c203" lo que significa es = devuelve la suma de la columna 2, del rango de elementos del 0 al 3.
      - "f001" lo que significa es = devuelve la suma de la fila 0, del rango de elementos del 0 al 1.


Problema:

Lo que quiero hacer es un método en "Matriz", devolverResultadoSuma(int numFila, int numColumna), que a su vez haga:

   return this->contenidoMatriz[numFila][numColumna]->getSuma()

y devuelva el resultado de realizar la suma que se indique en la celda, sobre esa posición.
(El método SIEMPRE se llamará sobre elementos "CeldaSumar").

Mi problema es que no se cómo hacer para pasar la matriz a getSuma().
Por el enunciado no puedo pasar el elemento matriz como
parámetro. Creo que tengo que refenciar la matriz de alguna forma para que getSuma() tenga matriz sobre la que moverse.

Le he estado dando mil vueltas a este ejercicio, y creo que tiene que haber alguna manera de pasar la matriz a getSuma(), pero no consigo hayar la solución. Habia pensado en, como se llama mediante, por ejemplo, matriz1>devolverResultadoSuma(0,0), que a su vez va a llamar a getSuma() sobre esa posición, se tiene que poder pasar la matriz que le está llamando.

Muchas gracias por vuestra ayuda de antemano.

Un saludo.


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda referenciar una matriz desde un objeto
« Respuesta #1 en: 26 Mayo 2014, 10:07 am »

Estás mezclando conceptos.

¿De quién es la responsabilidad de devolver el valor de la celda? De la clase "CeldaSumar" o de la matriz?

* Si es de la clase "CeldaSumar" (desde mi punto de vista lo más lógico) ésta clase debería tener un puntero o referencia a la matriz para poder pedir los valores que correspondan. De esta forma no sería necesario implementar nada en la clase "Matriz", ya que las operaciones necesarias para realizar los cálculos están implementadas en "CeldaSumar".

* Si es de la clase "Matriz", deberías comprobar si el elemento pedido es de tipo "CeldaSumar" y en este caso realizar la suma que éste elemento contenga... lo que sucede en este caso es que no aprovechas el polimorfismo y el diseño con dos clases para "Elemento" no tiene sentido.

Las clases deberían tener esta forma:

Código
  1. class Elemento
  2. {
  3.  public:
  4.    virtual int Valor( ) const = 0;
  5. };
  6.  
  7. class CeldaInteger
  8. {
  9.  public:
  10.  
  11.    void SetValor( int valor )
  12.    { _valor = valor; }
  13.  
  14.    int Valor( ) const
  15.    { return _valor; }
  16.  
  17.  private:
  18.  
  19.    int _valor;
  20. };
  21.  
  22. class CeldaSumar( )
  23. {
  24.  public:
  25.  
  26.    CeldaSumar( Matriz* matriz )
  27.      : _matriz( matriz )
  28.    {
  29.    }
  30.  
  31.    void SetSuma( const std::string& suma )
  32.    { _suma = suma; }
  33.  
  34.    int Valor( ) const
  35.    {
  36.      int valor = 0;
  37.  
  38.      // Algoritmo para calcular la suma
  39.      // valor += _matriz->Valor( fila, columna );
  40.  
  41.      return valor;
  42.    }
  43.  
  44.  private:
  45.  
  46.    Matriz* _matriz;
  47.    std::string _suma;
  48. };


« Última modificación: 26 Mayo 2014, 13:34 pm por eferion » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Escanear desde VB a un Objeto OLE
Programación Visual Basic
Cj2009z 0 1,034 Último mensaje 8 Diciembre 2006, 20:31 pm
por Cj2009z
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
EddyW 2 4,858 Último mensaje 14 Agosto 2010, 06:18 am
por EddyW
Crear Objeto Desde Código
.NET (C#, VB.NET, ASP)
Rudy21 7 4,038 Último mensaje 21 Septiembre 2011, 18:00 pm
por Keyen Night
Duda! LLamar a una funcion desde Lado Cliente ,con un objeto de video ASP.NET
Desarrollo Web
USLO 0 1,021 Último mensaje 14 Mayo 2012, 17:25 pm
por USLO
Enviar una matriz desde una funcion a la matriz del main
Programación C/C++
erest0r 3 2,209 Último mensaje 22 Junio 2013, 09:05 am
por leosansan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines