Главная страница
Навигация по странице:

  • Объявление, ввод и вывод двумерного массива

  • Обработка двумерного массива

  • Практическая работа 8. Обработка двухмерных массивов среде Visual C. Цель работы Изучение двумерных массивов в языке С


    Скачать 16.88 Kb.
    НазваниеПрактическая работа 8. Обработка двухмерных массивов среде Visual C. Цель работы Изучение двумерных массивов в языке С
    Дата11.03.2021
    Размер16.88 Kb.
    Формат файлаdocx
    Имя файлаPrakticheskaya_rabota_8_Obrabotka_dvukhmernykh_massivov_srede_Vi.docx
    ТипПрактическая работа
    #183672

    Практическая работа №8.

    Обработка двухмерных массивов среде Visual C++.

    Цель работы : Изучение двумерных массивов в языке С++ .

    Массивы в С++ могут иметь много индексов. Обычным представлением многомерных массивов являются таблицы значений, содержащие информацию в строках и столбцах. Чтобы определить отдельный табличный элемент, нужно указать два индекса: первый (по соглашению) указывает номер строки, а второй (по соглашению) указывает номер столбца. Таблицы или массивы, которые требуют двух индексов для указания отдельного элемента, называются двумерными.

    Каждый элемент в двумерном массиве а определяется именем элемента в форме a[i][j]; а – это имя массива, а i и j – индексы, которые однозначно определяют каждый элемент в a. Имена элементов первой строки имеют первый индекс 0, имена элементов четвертого столбца имеют второй индекс 3.

    Многомерные массивы могут получать начальные значения в своих объявления точно так же, как массивы с единственным индексом. Значения группируются в строки, заключенные в фигурные скобки:

    intb [2][3] = {{1,2,3,}, {4,5,6}};

    Если начальных значений в данной строке не хватает для их присвоения всем элементам строки, то остающимся элементам строки присваиваются нулевые значения

    intb [2][3] = {{1,}, {4,5,6}};

    intc [2][3] = {{1,2,3,4,5};

    Объявление, ввод и вывод двумерного массива

    Объявление int A[n] создает в памяти одномерный массив: набор пронумерованных элементов, идущих в памяти последовательно. К каждому элементу массива можно обратиться, указав один индекс - номер этого элемента. Но можно создать и двумерный массив следующим образом: int A[n][m]. Данное объявление создает массив из n объектов, каждый из которых в свою очередь является массивом типа int [m]. Тогда A[i], где i принимает значения от 0 до n-1 будет в свою очередь одним из n созданных обычных массивов, и обратиться к элементу с номером j в этом массиве можно через A[i][j].

    Подобные объекты (массивы массивов) также называют двумерными массивами. Двумерные массивы можно представлять в виде квадратной таблицы, в которой первый индекс элемента означает номер строки, а второй индекс – номер столбца. Например, массив A[3][4] будет состоять из 12 элементов и его можно записать в виде

    A[0][0] A[0][1] A[0][2] A[0][3]

    A[1][0] A[1][1] A[1][2] A[1][3]

    A[2][0] A[2][1] A[2][2] A[2][3]

    Для считывания, вывода на экран и обработки двумерных массивов необходимо использовать вложенные циклы. Первый цикл – по первому индексу (то есть по всем строкам), второй цикл – по второму индексу, то есть по всем элементам в строках (столбцам). Например, вывести на экран двумерный массив в виде таблицы, разделяя элементы в строке одним пробелом можно следующим образом:

    int A[n][m];

    for (int i = 0; i < n; ++i)

    { // Выводим на экран строку i

    for (int j = 0; j < m; ++j)

    {

    cout << A[i][j] << " ";

    }

    cout << endl;

    // Строка завершается символом перехода на новую строку

    }

    А считать двумерный массив с клавиатуры можно при помощи еще более простого алгоритма (массив вводится по строкам, то есть в порядке, соответствующему первому примеру):

    for (i = 0; i < n; ++i)

    {

    for (j = 0; j < m; ++j)

    {

    cin >> A[i][j];

    }

    }

    Обработка двумерного массива

    Обработка двумерных массивов производится аналогичным образом. Например, если мы хотим записать в массив таблицу умножения, то есть присвоить элементу A[i][j] значение i * j, это можно сделать следующим образом при помощи вложенных циклов:

    for (i = 0; i < n; ++i)

    {

    for (j = 0; j < m; ++j)

    {

    A[i][j] = i * j;

    }

    }

    Рассмотрим более сложную задачу и несколько способов ее решения. Пусть дан квадратный двумерный массив int A[n][n]. Необходимо элементам, находящимся на главной диагонали проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j], для которых i==j) присвоить значение 1, элементам, находящимся выше главной диагонали – значение 0, элементам, нахощящимся ниже главной диагонали – значение 2. То есть получить такой массив (пример для n==4):

    1 0 0 0

    2 1 0 0

    2 2 1 0

    2 2 2 1

    Рассмотрим несколько способов решения этой задачи. Элементы, которые лежат выше главной диагонали – это элементы A[i][j], для которых ij. Таким образом, мы можем сравнивать значения i и j и по ним определять значение A[i][j].

    Ход работы

    1. Составить программу для заполнения элементов массива 4х4 следующим образом:


    1 2 2 2

    0 1 2 2

    0 0 1 2

    0 0 0 1


    1. Составить программу для поиска позиций искомого элемента в двумерном массиве 4х6, и вывода на экран всех его позиций. Т.е. пользователь вводит с клавиатуры значение элемента, а программа выводит на экран все его позиции при поиске или сообщение что таких элементов нет.


    написать администратору сайта