Программирование на Cи




Содержание:
  • Понятие массива. Объявление массивов
  • Доступ к элементам массива
  • Многомерные массивы

  • Понятие массива. Объявление массивов

    Часто при разработке программ требуется ввод, хранение и обработка большого числа данных одинакового типа (однотипных данных). Для работы с большим количеством однотипных данных в языке Си предусмотрены массивы. Массив, это именованная переменная определённого типа, имеющая индекс. Индекс это адрес ячейки памяти, в которой хранится эта переменная. Число элементов массива задаётся при объявлении массива. В общем виде объявление массива записывается так:
    Тип_переменной имя_переменной [размер массива];
    Например:
    int array_x [100]; /*Объявлен массив array_x целых чисел размером 100 элементов */
    char ch[40]; /*Объявлен массив ch символьных переменных размером 40 элементов */
    Индексация элементов массива начинается с нуля. Так объявленный массив array_x будет иметь индексы от 0 до 99.
    При объявлении массива, его можно сразу инициализировать, то есть задать определённые значения элементам массива, например:
    int xy[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    Здесь мы создали массив xy целых чисел из десяти элементов и сразу задали значения каждого элемента массива. При начальной инициализации массива, размер массива в квадратных скобках можно не указывать, например:
    int xy[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    char ch1[] = "Hello, World";



    Доступ к элементам массива
    Для доступа к элементу массива достаточно указать имя переменной массива и в квадратных скобках его индекс. Напишем такую программу:

    #include <stdio.h>
    void main()
    {
        int ar1[] = {1,2,3,4,5,6,7,8,9,10};
        printf("Element 4 = %d", ar1[4]);
    }
    При выполнении этой программы, мы видим, что элементу массива ar1 с индексом 4 соответствует число 5. Это связано с тем, что индексация начинается с нуля:



    Если посмотреть элемент массива с индексом 10, который выходит за предел диапазона индексов, то его значение будет не определено, то есть будет ошибка выполнения программы. Это обстоятельство следует учитывать при разработке программ.



    Для инициализации элементов массива в процессе выполнения программы можно воспользоваться оператором ввода, помещённым в цикл:

    #include <stdio.h>
    void main()
    {
    int ar1[5]; /* Объявляем массив из 5-и элементов */
    int n;
    clrscr();
    /* Создаём цикл */
      for (n=0; n<=4; n++)
      {
      printf("Vvedi Element%d ",n);
    /* Вводим значения элементов массива */
      scanf("%d",&ar1[n]);
    }
    /* Проверяем начичие в памяти введённых значений массива */
      for (n=0; n<=4; n++) printf("\nElement %d %d",n,ar1[n]);
    }






    Многомерные массивы
    В языке Си можно использовать многомерные массивы, простейшим из них является двумерный массив - прямоугольная матрица. Для объявления многомерных массивов достаточно за именем переменной записать необходимое количество элементов, например:
    int ar1[3][2]; /* Объявлен двумерный массив с размерностью 3х2 элемента */
    Двумерный массив легко представить в виде таблицы, в ячейках которой записаны определённые значения. Доступ к значениям таблицы осуществляется по индексам - пересечение столбика и строки таблицы.




    В таблице столбики помечены переменной x, с строки переменной y. Так, например, что бы получить доступ к числу 58 записанному в ячейке следует обратиться к массиву с такими индексами: ar1[2][1];
    Для инициализации такого массива напишем программу, в которой будем вводить данные по номерам индексов, а затем выведем полученную матрицу на экран. Для этого нам потребуется два цикла, один для изменения значений индексной переменной x и второй для изменения индексной переменной y. По правилам программирования, происходит первая итерация наружного цикла, затем выполняются все итерации внутреннего цикла, затем происходит очередная итерация наружного цикла и так далее.

    #include <stdio.h>
    void main()
    {
    int ar1[3][2]; /* Объявляем двумерный массив целых чисел */
    int x,y; /* Создаём две индексные переменные */
    clrscr();
    /* Создаём два цикла для ввода данных в матрицу*/
    for (x=0; x<=2; x++)
    {
    for (y=0; y<=1; y++)
    {
    printf("Vvedi Element %d%d ",x,y);
    scanf("%d",&ar1[x][y]);
    }
    }
    /* Создаём два цикла для вывода матрицы на экран*/
    for (y=0; y<=1; y++)
    {
    printf("\n");
    for (x=0; x<=2; x++) printf("%d ",ar1[x][y]);
    }
    }

    Введём данные согласно предлагаемым номерам индексов и содержимого таблицы:



    Для создания многомерных массивов, достаточно объявить массив с нужным количеством измерений и элементов, например:
    double ar1[3][3][7]; Объявлен 3-х мерный массив с размерностью 3х3х7



    Яндекс.Метрика    ©Гуков Константин Михайлович 2006 - 2013     Почта: juvel@mail.ru