#include<iOStream>
#include<iomanip>
#include<vector>
#include<random>
#include<ctime>
using data_t = std::vector<std::vector<int>>;
size_t get_width (int num)
{
size_t width=1;
while (num/=10)
++width;
return width;
}
std::vector<size_t> get_column_widths (const data_t& data)
{
std::vector<size_t> width;
for (auto row : data)
{
if (width.size() < row.size())
width.resize (row.size());
for (size_t i=0; i<row.size(); ++i)
{
size_t w = get_width (row[i]);
if (width[i]<w)
width[i]=w;
}
}
return width;
}
void print_table (const data_t& data)
{
using std::cout;
using std::endl;
using std::right;
using std::setw;
std::vector<size_t> width = get_column_widths (data);
cout << right;
for (auto row : data)
{
for (size_t i=0; i<row.size(); ++i)
{
cout << setw(width[i]) << row[i] << ' ';
}
cout << endl;
}
}
int main()
{
// Random number generator (range: [1:1000])
std::default_random_engine generator ((unsigned) time (0));
std::uniform_int_distribution<unsigned> distribution (1, 10000);
// Create a 10x5 matrix:
data_t data;
for (size_t row=0; row<10; ++row)
{
data.push_back (std::vector<int>{});
for (size_t col=0; col<5; ++col)
data[row].push_back (distribution (generator));
}
print_table (data);
}
Copyright © 2026 eLLeNow.com All Rights Reserved.