Elabore un algoritmo que permita obtener la siguiente 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];
}
// implemnetacion del metodo para dibujar la matriz
void Calcular::dibujarMatriz()
{
// declarare de una variable temporal de tipo y le asignare 1
int temp = 1;
// declaro una variable de tipo entero y la llama direccion
int direccion;
// 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++)
{
// en la fila i, columna j se asignara el valor de 0 para no perdernos
setMatriz(i, j, 0);
}
}
// recorrere con el primer ciclo for las filas i
for (int i = 0; i < 9; i++)
{
// le asigno a la variable direccion el valor de 1
direccion = 1;
// si la direccion es igual a 1
if (direccion == 1)
{
// recorrrere con el segundo ciclo for las columnas j
for (int j = 0; j < 9; j++)
{
// si el valor que hay en la fila i, columna j es igual a 0
if (getMatriz(i, j) == 0)
{
// entonces se le asignara en la fila i, columna j el valor actual de temp
setMatriz(i, j, temp);
// incrementamos la variale temp
temp++;
}
}
}
// incrementamos la variable direccion
direccion++;
// si la direccion es igual a 2
if(direccion == 2)
{
// recorrrere con el segundo ciclo for las columnas k
for (int k = 0; k < 9; k++)
{
// si el valor que hay en la fila k, columna (9-(i+1) es igual a 0
if (getMatriz(k, (9-(i+1))) == 0)
{
// entonces se le asignara en la fila k, columna (9-(i+1) el valor actual de temp
setMatriz(k, (9-(i+1)), temp);
// incrementamos la variale temp
temp++;
}
}
}
// incrementamos la variable direccion
direccion++;
// si la direccion es igual a 3
if (direccion == 3)
{
// recorrrere con el segundo ciclo for las columnas k
for (int k = 8; k >= 0; k--)
{
// si el valor que hay en la fila (9-(i+1), columna k es igual a 0
if (getMatriz((9-(i+1)), k) == 0)
{
// entonces se le asignara en la fila (9-(i+1), columna k el valor actual de temp
setMatriz((9-(i+1)), k, temp);
// incrementamos la variale temp
temp++;
}
}
}
// incrementamos la variable direccion
direccion++;
// si la direccion es igual a 4
if (direccion == 4)
{
// recorrrere con el segundo ciclo for las columnas k
for (int k = 8; k >= 0; k--)
{
// si el valor que hay en la fila k, columna i es igual a 0
if (getMatriz(k, i) == 0)
{
// entonces se le asignara en la fila k, columna i el valor actual de temp
setMatriz(k, i, temp);
// incrementamos la variale temp
temp++;
}
}
}
}
}
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 y le asignare 1
int temp = 1;
// declaro una variable de tipo entero llamada direccion
int direccion;
// 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++)
{
// en la fila i, columna j se asignara el valor de 0 para no perdernos
setMatriz(i, j, 0);
}
}
// recorrere con el primer ciclo for las filas i
for (int i = 0; i < 9; i++)
{
// le asigno a la variable direccion el valor de 1
direccion = 1;
// si la direccion es igual a 1
if (direccion == 1)
{
// recorrrere con el segundo ciclo for las columnas j
for (int j = 0; j < 9; j++)
{
// si el valor que hay en la fila i, columna j es igual a 0
if (getMatriz(i, j) == 0)
{
// entonces se le asignara en la fila i, columna j el valor actual de temp
setMatriz(i, j, temp);
// incrementamos la variale temp
temp++;
}
}
}
// incrementamos la variable direccion
direccion++;
// si la direccion es igual a 2
if(direccion == 2)
{
// recorrrere con el segundo ciclo for las columnas k
for (int k = 0; k < 9; k++)
{
// si el valor que hay en la fila k, columna (9-(i+1) es igual a 0
if (getMatriz(k, (9-(i+1))) == 0)
{
// entonces se le asignara en la fila k, columna (9-(i+1) el valor actual de temp
setMatriz(k, (9-(i+1)), temp);
// incrementamos la variale temp
temp++;
}
}
}
// incrementamos la variable direccion
direccion++;
// si la direccion es igual a 3
if (direccion == 3)
{
// recorrrere con el segundo ciclo for las columnas k
for (int k = 8; k >= 0; k--)
{
// si el valor que hay en la fila (9-(i+1), columna k es igual a 0
if (getMatriz((9-(i+1)), k) == 0)
{
// entonces se le asignara en la fila (9-(i+1), columna k el valor actual de temp
setMatriz((9-(i+1)), k, temp);
// incrementamos la variale temp
temp++;
}
}
}
// incrementamos la variable direccion
direccion++;
// si la direccion es igual a 4
if (direccion == 4)
{
// recorrrere con el segundo ciclo for las columnas k
for (int k = 8; k >= 0; k--)
{
// si el valor que hay en la fila k, columna i es igual a 0
if (getMatriz(k, i) == 0)
{
// entonces se le asignara en la fila k, columna i el valor actual de temp
setMatriz(k, i, temp);
// incrementamos la variale temp
temp++;
}
}
}
}
}
}