#include <iostream>
#include <math.h>
#define MAX 400
int tongcheo(int a[][MAX], int n);
void mangcon(int a[][MAX], int n, int size);
struct sub_array
{
int subraw[MAX];
int subend[MAX][MAX];
};
int main()
{
// UNCOMMENT ALL CIN WHEN DONE
// TESTING WITH N = 4 AND PREDEFINED INPUT
int n;
n = 5; // Remove when done
// std::cin >> n;
int a[MAX][MAX] = {{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}};
if (2 <= n && n <= 400)
{
/* Testing with n =4 and predefined input, uncomment when done
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
std::cin >> a[i][j];
}
}
*/
// For testing purpose, uncomment to test
std::cout << "Predefined array: "
<< "\n";
for (int row = 0; row < n; row++)
{
for (int col = 0; col < n; col++)
{
if (col == n - 1)
{
std::cout << a[row][col] << "\n";
continue;
}
if (a[row][col] < 10)
{
std::cout << a[row][col] << " ";
continue;
}
std::cout << a[row][col] << " ";
}
}
std::cout << "\n\n"
<< "Subarray: "
<< "\n";
for (int i = 2; i < n; i++)
{
mangcon(a, n, i);
}
}
return 0;
}
int tongcheo(int a[][MAX], int n)
{
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += a[i][i];
}
for (int i = 0; i < n; i++)
{
sum += (-1) * a[i][n - 1 - i];
}
return sum;
}
void mangcon(int a[][MAX], int n, int size)
{
// This var is to count subarray
int subarr = 0;
// Count subarray
for (int i = 0; i < n - size + 1; i++)
{
for (int j = 0; j < n - size + 1; j++)
{
subarr++;
}
}
// Create array to store subarray
sub_array subarray[subarr];
// This var is subarray order
int suborder = 1;
// Amount of subarray to be printed
std::cout << "For " << size << " x " << size << " array: \0";
std::cout << subarr << " subarray in total. \n\n";
// Limit starting point
for (int i = 0; i < n - size + 1; i++)
{
for (int j = 0; j < n - size + 1; j++)
{
std::cout << "This is the " << suborder << "th subarray.\n";
// Limit ending point according to 'size'
for (int row = i; row < i + size; row++)
{
// Count subarray member
int submember = 0;
for (int col = j; col < j + size; col++)
{
// For testing purpose, uncomment
if (a[row][col] < 10)
{
std::cout << a[row][col] << " ";
continue;
}
std::cout << a[row][col] << " ";
// Put raw data to rawarray
// subarray[suborder].subraw[submember] = a[row][col];
}
}
std::cout << "\n\n";
suborder++;
}
}
// For testing purpose, uncomment to print subarray from struct
// for (int i = 1; i < suborder; i++)
// {
// for (int j = 1; j < subarr; j++)
// {
// std::cout << subarray[i].subraw[j] << "\n";
// }
// }
}