Загрузка данных


#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;

// размеры идут первыми, массив после них
void vivod_dvymernogo_masiva(int stroki, int stolbcy, int masiv[stroki][stolbcy]);
void Zapolnenie_dvymernogo_masiva(int stroki, int stolbcy, int masiv[stroki][stolbcy]);

int main()
{
    int N_Kol_Strok, M_Kol_Stolbcov;

    cout << "Введите кол-во строк: "; cin >> N_Kol_Strok;
    cout << "Введите кол-во столбцов: "; cin >> M_Kol_Stolbcov;

    int masiv[N_Kol_Strok][M_Kol_Stolbcov];

    Zapolnenie_dvymernogo_masiva(N_Kol_Strok, M_Kol_Stolbcov, masiv);
    vivod_dvymernogo_masiva(N_Kol_Strok, M_Kol_Stolbcov, masiv);
}

// красивый вывод двумерного массива, всё считается внутри
void vivod_dvymernogo_masiva(int stroki, int stolbcy, int masiv[stroki][stolbcy])
{
    int stroka, stolbec, i;
    int shirina = 1;
    int chislo, kol;

    // ищем самое длинное число (минус тоже считается за символ)
    for (stroka = 0; stroka < stroki; stroka++)
    {
        for (stolbec = 0; stolbec < stolbcy; stolbec++)
        {
            chislo = masiv[stroka][stolbec];
            kol = 0;

            if (chislo <= 0)
            {
                kol = 1;
            }

            while (chislo != 0)
            {
                chislo = chislo / 10;
                kol++;
            }

            if (kol > shirina)
            {
                shirina = kol;
            }
        }
    }

    // верхняя линия
    for (stolbec = 0; stolbec < stolbcy; stolbec++)
    {
        cout << "+";
        for (i = 0; i < shirina + 2; i++)
        {
            cout << "-";
        }
    }
    cout << "+" << endl;

    // строки с числами и линия под каждой строкой
    for (stroka = 0; stroka < stroki; stroka++)
    {
        cout << "|";
        for (stolbec = 0; stolbec < stolbcy; stolbec++)
        {
            cout << " " << setw(shirina) << masiv[stroka][stolbec] << " |";
        }
        cout << endl;

        for (stolbec = 0; stolbec < stolbcy; stolbec++)
        {
            cout << "+";
            for (i = 0; i < shirina + 2; i++)
            {
                cout << "-";
            }
        }
        cout << "+" << endl;
    }
}

// Заполнение двумерного масива рандомам
void Zapolnenie_dvymernogo_masiva(int stroki, int stolbcy, int masiv[stroki][stolbcy])
{
    srand(time(NULL));

    int a, b;
    cout << "Введите начало рандома: "; cin >> a;
    cout << "Введите конец рандома: "; cin >> b;

    for (int stroka = 0; stroka < stroki; stroka++)
    {
        for (int stolbec = 0; stolbec < stolbcy; stolbec++)
        {
            masiv[stroka][stolbec] = a + rand() % (b - a + 1);
        }
    }
}