11/23/2016

Ejercicio 35

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 pantall
            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];
}


// implemnetacion del metodo para dibujar la matriz
void Calcular::dibujarMatriz()
{
    // declarare de una variable temporal de tipo entero: temp_1 y una variable val
    int temp_1, val;
    // declaro e inicializo la variable temp_2 en 1
    int temp_2 = 1;

    // recorrere con el primer ciclo for las filas i
    for (int i = 0; i < 9; i++)
    {
        // recorrrere con el segundo ciclo for las columnas j
        for (int j = 0; j < 9; j++)
        {
            // si estamos en la fila 0, (primera fila)
            if (i == 0)
            {
                // entonces le asignare en la fila i, columna j el valor de que tenga actualmente la variable temp_2
                setMatriz(i, j, temp_2);
                // incremento temp_2 en 1
                temp_2++;
            }
            else // sino
            {
                // le asigno a la variable temp_1 el valor actual de i mas 1
                temp_1 = i+1;
                // le asigno a la variable val el valor actual de temp_1
                val = temp_1;

                // con el cilo do...while
                do
                {

                    // hare que se le asigne en la fila i, columnaj el valor actual de temp_1
                    setMatriz(i, j, temp_1);
                    // decremento la variable val en 1
                    val--;
                }
                while (val > 0); // repetire las instrucciones anteriores mientras la variable val sea mayor que 0

                // si la variable val es igual a cero
                if (val == 0)
                {
                    // entonces le asignare a la variable temp_1 el valor actual de i mas 1
                    temp_1 = i+1;
                    // le asigno en la fila i, columna j, el valor actual de temp_1
                    setMatriz(i, j, temp_1);
                    // incremento temp_1 en 1
                    temp_1++;
                }
            }
        }
    }
}

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 de una variable temporal de tipo entero temp_1 y una variable val
        int temp_1, val;
        // declaro e inicializo la variable temp_2 en 1
        int temp_2 = 1;

        // recorrere con el primer ciclo for las filas i
        for (int i = 0; i < 9; i++)
        {
            // recorrrere con el segundo ciclo for las columnas j
            for (int j = 0; j < 9; j++)
            {
                // si estamos en la fila 0, (primera fila)
                if (i == 0)
                {
                    // entonces le asignare en la fila i, columna j el valor de que tenga actualmente temp_2
                    setMatriz(i, j, temp_2);
                    // incremento temp_2 en 1
                    temp_2++;
                }
                else // sino
                {
                    // le asigno a la variable temp_1 el valor actual de i mas 1
                    temp_1 = i+1;
                    // le asigno a la variable val el valor actual de temp_1
                    val = temp_1;

                    // con el cilo do...while
                    do
                    {

                        // hare que se le asigne en la columna i, j el valor actual de temp_1
                        setMatriz(i, j, temp_1);
                        // decremento la variable val en 1
                        val--;
                    }
                    while (val > 0); // repetire las instrucciones anteriores mientras la variable val sea mayor que 0

                    // si la variable val es igual a cero
                    if (val == 0)
                    {
                        // entonces le asignare a la variable temp_1 el valor actual de i mas 1
                        temp_1 = i+1;
                        // le asigno en la fila i, columna j, el valor actual de temp_1
                        setMatriz(i, j, temp_1);
                        // incremento temp_1 en 1
                        temp_1++;
                    }
                }
            }
        }
    }
}