Домашнее задание для ПО 2.11 по системному программированию от 22.04.20
учебно-методический материал

Склемин Алексей Анатольевич

Требуется написать программу, которая заполняет массив размерности nxn по заданному правилу: То есть, заполнение массива должно быть по диагонали, сверху-вниз, слева-направо. Причем заполнение еще и зигзагообразное.

Скачать:

ВложениеРазмер
Microsoft Office document icon 47.doc31.5 КБ

Предварительный просмотр:

Сорок седьмое задание

Требуется написать программу, которая заполняет массив размерности nxn по заданному правилу: То есть, заполнение массива должно быть по диагонали, сверху-вниз, слева-направо. Причем заполнение еще и зигзагообразное.


#include

#include

using namespace std;

 

int main()

{

    const int colum = 10; // количество столбцов массива

    const int row   = 10; // количество строк массива

    int array[100][100];

 

    int x, y,  // Координаты текущего элемента массива

        value = 1; // значение, которым заполняется массив

 

    // зполнение первой половины массива по диагонали, зигзагом, начиная

    // слева и сверху, заканчивая  побочной диагональю

    for (int diag = 0; diag < colum; diag++) // выполняем проход по диагоналям

    {

        if (diag % 2 == 0) // по четным диагоналям

        {

            x = 0; // х-координата первого лемента массива на диагонали - diag

            y = diag; // у-координата элемента массива на диагонали - diag

 

            while (y >= 0) // пока y-координата находится в верхней части диагонали

            {

                array[x][y] = value; // записать значение в массив

                value++;

                x++;     // по горизонтали, смещаемся влево

                y--;    // по вертикали, смещаемся вниз

            }

        }

        else // по нечетным диагоналям

        {

            x = diag; // х-координата элемента массива на диагонали - diag

            y = 0; // у-координата первого элемента массива на диагонали - diag

 

            while (x >= 0) // пока x-координата находится в левой части диагонали

            {

                array[x][y] = value; // записать значение в массив

                value++;

                x -= 1;  // по горизонтали, смещаемся вправо

                y +=  1; // по вертикали, смещаемся вверх

            }

        }

    } // конец for

 

    // заполнение второй половины массива по диагонали, зигзагом, начиная

    // слева и сверху, заканчивая  последним элементом массива

    for (int diag = 1; diag < colum; diag++)

    {

        if (diag % 2 == 0) // по четным диагоналям

        {

            x = 9; // х-координата первого элемента массива на диагонали - diag

            y = diag;  // у-координата элемента массива на диагонали - diag

 

            while (y <= 9) // Пока не кончилась диагональ

            {

                array[x][y] = value;

                value++;

                x--; // по горизонтали, смещаемся влево

                y++; // по вертикали, смещаемся вниз

            }

        }

        else // по не четным диагоналям

        {

            x = diag; // х-координата первого элемента к-ой диагонали

            y = 9;  // у-координата первого элемента к-ой диагонали

 

            while (x <= 9) // Пока не кончилась диагональ

            {

                array[x][y] = value;

                value++;

                x++; // по горизонтали, смещаемся вправо

                y--; // по вертикали, смещаемся вверх

            }

        } // конец if-else

    } // конец цикла for (заполнение второй половины массива)

 

    // вывод масиива на экран

    for (int ix = 0; ix < row; ix++)

    {

        for (int jx = 0; jx < colum; jx++)

            cout << setw(4) << array[ix][jx] << " ";

        cout << endl;

    }

 

    return 0;

}


По теме: методические разработки, презентации и конспекты

Домашнее задание для ПО 1.11 по системному программированию от 04.02.20

Шестнадцатеричное представление Представим, что необходимо просмотреть содержимое некотоpых байт в памяти. Требуется oпределить содержимое четырех последовательных байт (двух слов), которые имеют двои...

Домашнее задание для ПО 1.11 по системному программированию от 11.02.20

Сегменты Сегментом называется область, которая начинается на границе параграфа, то есть, по любому адресу, который делится на 16 без остатка. Хотя сегмент может располагаться в любом месте памяти и им...