12/26/2016

Ejercicio 36

Elabore un algoritmo que permita obtener la siguiente matriz:

Matriz

#include <iostream>
#include "Calcular.h"

using namespace std;

void mostrarMatriz(Calcular *obj)
{
    // recorro con el primer ciclo for las filas de la matriz i
    for (int i = 0; i < 9; i++)
    {
        // recorro con el segundo ciclo for las columnas de la matriz j
        for (int j = 0; j < 9; j++)
        {
            // muestro la matriz en pantalla
            cout << obj->getMatriz(i, j) << " ";
        }
        // salto de linea
        cout << endl;
    }
}

int main(void)
{
    // se crea un objeto de la clase Calcular (Instanciaciaci贸n)
    Calcular *obj = new Calcular();
    // llamo al metodo para dibujar la matriz
    obj->dibujarMatriz();
    // muestro la matriz y le paso el objeto obj de la clase Calcular como parametro
    mostrarMatriz(obj);
}

#ifndef CALCULAR_H
#define CALCULAR_H


class Calcular
{
    public:
        Calcular();
        virtual ~Calcular();
        // declaro los metodos publicos, para dibujar la matriz y encapsular el vector bidimensional matriz[]
        void dibujarMatriz();
        void setMatriz(int fil, int col, int val);
        int getMatriz(int fil, int col);
    protected:

    private:
        // declaro el atributo privado matriz de tipo entero que tendra [9] filas y [9] columnas
        int matriz[9][9];
};

#endif // CALCULAR_H<

#include "Calcular.h"

Calcular::Calcular()
{
    // ctor
}

Calcular::~Calcular()
{
    //dtor
}

// implementacion de los metodos Setter y Getters de los atributos de la clase Calcular
void Calcular::setMatriz(int fil, int col, int val)
{
    // le asignare a la matriz el valor de val, en la posicion fil, col que se hayan pasado como parametro
    matriz[fil][col] = val;
}

int Calcular::getMatriz(int fil, int col)
{
    // retornare el valor que haya en la fila fil, columna col que se haya pasado como parametro
    return matriz[fil][col];
}


// implementacion del metodo para dibujar la matriz
void Calcular::dibujarMatriz()
{
    // declarare dos variables temporal de tipo entero temp_1 y temp_2
    int temp_1, temp_2;

    // recorrere con el primer ciclo for las filas i
    for (int i = 0; i < 9; i++)
    {
        // se le asigna a temp_1 el valor actual de i sumado con 1
        temp_1 = i+1;
        // se le asigna a temp_2 el valor de 2
        temp_2 = 2;
        // recorrrere con el segundo ciclo for las columnas j
        for (int j = 0; j < 9; j++)
        {
            // si el valor actual de i es igual a cero
            if (i == 0)
            {
                // entonces en la fila i, columna j actual, se le asignara el valor de temp_1
                setMatriz(i, j, temp_1);
                // incrementamos en 1 el valor de temp_1
                temp_1++;
            }
            // y sino, si el valor de temp_1 es mayor o igual a 1
            else if (temp_1 >= 1)
            {
                // entonces en la fila i, columna j actual, se le asignara el valor de temp_1
                setMatriz(i, j, temp_1);
                // decrementamos en 1 el valor de temp_1
                temp_1--;
            }
            else
            {
                // sino en la fila i, columna j actual, se le asignara el valor de temp_2
                setMatriz(i, j, temp_2);
                // incrementamos en 1 el valor de temp_2
                temp_2++;
            }
        }
    }
}

public class Main
{
    public static void mostrarMatriz(Calcular obj)
    {
        String datos_matriz = "";
        // recorro con el primer ciclo for las filas de la matriz i
        for (int i = 0; i < 9; i++)
        {
            // recorro con el segundo ciclo for las columnas de la matriz j
            for (int j = 0; j < 9; j++)
            {
                // acumulo los datos de la matriz en la variable datos_matriz
                datos_matriz = datos_matriz + String.valueOf(obj.getMatriz(i, j)) + " ";
            }
            // salto de linea
            datos_matriz = datos_matriz + "\n";
        }
        // muestro la matriz
        System.out.println(datos_matriz);
    }
    public static void main(String[] args)
    {
        // se crea un objeto de la clase Calcular (Instanciaciaci贸n) 
        Calcular obj = new Calcular();
        // llamo al metodo para dibujar la matriz
        obj.dibujarMatriz();
        // muestro la matriz y le paso el objeto obj de la clase Calcular como parametro 
        mostrarMatriz(obj);
    }
}

public class Calcular
{
    // declaro la matriz privada de tipo entero
    private int [][] matriz;
    
    public Calcular()
    {
        // le asigno en el constructor de la clase Calcular 9 filas y 9 columnas a la matriz
        matriz = new int[9][9];
    }
    
    // implementacion de los metodos Setter y Getters de los atributos de la clase Calcular
    public void setMatriz(int fil, int col, int val)
    {
        // le asignare a la matriz el valor de val, en la fila fil, columna col que se hayan pasado como parametro 
        matriz[fil][col] = val;
    }

    public int getMatriz(int fil, int col)
    {
        // retornare el valor que haya en la fila fil, columna col que se haya pasado como parametro 
        return matriz[fil][col];
    }


    // implementacion del metodo para dibujar la matriz
    public void dibujarMatriz()
    {
        // declarare dos variables temporal de tipo entero temp_1 y temp_2
        int temp_1, temp_2;

        // recorrere con el primer ciclo for las filas i
        for (int i = 0; i < 9; i++)
        {
            // se le asigna a temp_1 el valor actual de i sumado con 1
            temp_1 = i+1;
            // se le asigna a temp_2 el valor de 2
            temp_2 = 2;
            // recorrrere con el segundo ciclo for las columnas j
            for (int j = 0; j < 9; j++)
            {
                // si el valor actual de i es igual a cero
                if (i == 0)
                {
                    // entonces en la fila i, columna j actual, se le asignara el valor de temp_1
                    setMatriz(i, j, temp_1);
                    // incrementamos en 1 el valor de temp_1
                    temp_1++;
                }
                // y sino, si el valor de temp_1 es mayor o igual a 1
                else if (temp_1 >= 1)
                {
                    // entonces en la fila i, columna j actual, se le asignara el valor de temp_1
                    setMatriz(i, j, temp_1);
                    // decrementamos en 1 el valor de temp_1
                    temp_1--;
                }
                else
                {
                    // sino en la fila i, columna j actual, se le asignara el valor de temp_2
                    setMatriz(i, j, temp_2);
                    // incrementamos en 1 el valor de temp_2
                    temp_2++;
                }
            }
        }
    }
}