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

  • Обращение к элементу массива

  • A[0], A[1], A[2], ..., A[9] Номер элемента массива также называется его индексом

  • A[345]

  • Заполнение случайными числами Пусть требуется заполнить массив равномерно распределенными слу-чайными числами в интервале [a,b]

  • [0,N-1] .Для получения случайных чисел с равномерным распределением в интервале [a,b]

  • Лабороторная по программированию. Лабораторная работа 6 Тип данных массив. Одномерные массивы


    Скачать 46 Kb.
    НазваниеЛабораторная работа 6 Тип данных массив. Одномерные массивы
    АнкорЛабороторная по программированию
    Дата17.10.2021
    Размер46 Kb.
    Формат файлаdoc
    Имя файлаlab6.doc
    ТипЛабораторная работа
    #249273

    Лабораторная работа №6

    Тип данных массив. Одномерные массивы
    1. Цель работы: приобретение практических навыков в разработке программ с одномерными массивами.


    1. Основные сведения


    Массивы - структурированный тип данных с элементами одного и того же типа, имеющий одно имя и определенное количество элементов. Количество элементов определяет размер массива. Порядковый номер элемента массива называется его индексом. Число индексов называется размерностью массива, например, массив с двумя индексами называется двумерным массивом. Строка символов является массивом символов, вектор – массив чисел, матрица – массив векторов. Обработка массивов выполняется следующим образом: объявление, ввод или инициализация элементов массива, преобразование и вывод.

    Объявление массива

    Чтобы использовать массив, надо его объявить – выделить место в памяти компьютера, объём которой зависит от количества элементов и типа массива. Тип массива - это тип входящих в него элементов. Массивы могут быть разных типов:

    — int, float, char, и т.д. Массив объявляют так же, как и обычные переменные, но после имени массива в квадратных скобках записывается его размер.

    int A[10], B[20]; // 2 массива по 10 и 20 целых чисел

    float C[12]; // массив из 12 вещественных чисел

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

    int A[4] = { 2, 3, 12, 76 };

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

    int A[4] = { 2 }; // последние три элемента равны 0

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

    const int N = 20; //N - константа

    main()

    {

    int A[N]; // размер массива задан через константу

    ...

    }

    Обращение к элементу массива

    Каждый элемент массива имеет свой порядковый номер. Чтобы обратиться к элементу

    массива, надо написать имя массива и затем в квадратных скобках номер нужного элемента. Важно запомнить правило: элементы массивов в языке Си нумеруются с нуля. Таким образом, если в массиве 10 элементов, он содержит элементы:

    A[0], A[1], A[2], ..., A[9]

    Номер элемента массива также называется его индексом. Вот примеры обращения к массиву A:

    x = (A[3] + 5)*A[1]; // прочитать значения A[3] и A[1]

    A[0] = x + 6; // записать новое значение в A[0]

    В языке Си не контролируется выход за границы массива, то есть формально вы можете записать что-то в элемент с несуществующим индексом, например в A[345] или в A[-12]. Однако при этом вы стираете какую-то ячейку в памяти, не относящуюся к массиву, поэтому последствия такого шага непредсказуемы и во многих случаях программа «зависает».

    Ввод с клавиатуры и вывод на экран

    Существует много способов ввода в зависимости от вашей задачи:

    • элементы массива вводятся с клавиатуры вручную;

    • массив заполняется случайными числами (например, для моделирования случайных процессов);

    • элементы массива читаются из файла;

    • массив заполняется в процессе вычислений.

    Чтобы ввести массив в память, надо каждый его элемент обработать отдельно (например, вызвав для него функцию ввода scanf). Для ввода и вывода массива обычно используется цикл for.

    Пусть дан массив a[50] из 10 целых чисел. Найти наибольший элемент в массиве и его порядковый номер. Элементы массива ввести с клавиатуры.

    # include

    #include

    const int n=10; // константа n=10

    main()

    { system("CLS");

    int i, max, nom, a[n];

    for (i=0; i
    { printf( "\n Введите элемент массива ");

    scanf ("%d", &a[i]);

    };

    for (i=1,max=a[0],nom=0; i
    if (max
    {nom=i; max=a[i];}

    printf("\n Вывод элементов исходного массива : \n");

    for (i=0; i
    printf ( "%6d", a[i] );

    printf ("\n Максимальное число в массиве %4d, его индекс %4d " , max, nom+1);

    system("PAUSE");

    return 0;

    }

    Заполнение случайными числами

    Пусть требуется заполнить массив равномерно распределенными слу-

    чайными числами в интервале [a,b]. Поскольку для целых и вещественных чисел способы

    вычисления случайного числа в заданном интервале отличаются, рассмотрим оба варианта.

    Описание функции-датчика случайных чисел находится в заголовочном файле stdlib.h. Удобно также добавить в свою программу функцию random:

    int random (int N) { return rand() % N; }

    которая выдает случайные числа с равномерным распределением в интервале [0,N-1].

    Для получения случайных чисел с равномерным распределением в интервале [a,b] надо использовать формулу

    k = random ( b – a + 1 ) + a;

    Для вещественных чисел формула несколько другая:

    x = rand()*(b - a)/RAND_MAX + a;

    Здесь константа RAND_MAX – это максимальное случайное число, которое выдает стандартная функция rand.

    //В приведенном ниже примере массив A заполняется случайными целыми числами в ин-

    //тервале [-5,10], а массив X - случайными вещественными числами в том же интервале.

    #include

    #include

    const int N = 10;

    int random (int N) { return rand()%N; }

    main()

    { system("CLS");

    int i, A[N], a = -5, b = 10;

    float X[N];

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

    A[i] = random(b-a+1) + a;

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

    X[i] = (float)rand()*(b-a)/RAND_MAX + a;

    printf("\nЦелые\n");

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

    printf("%4d",A[i]);

    printf("\nВещественные\n");

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

    printf("%6.2f",X[i]);

    system("PAUSE");

    return 0;

    }


    1. Выполнение работы

    1. Сформировать с помощью датчика случайных чисел в диапазоне [-10,10] массив из 20 элементов целого типа. Вывести его на экран. Затем вывести на экран все положительные элементы массива, и все отрицательные элементы.

    2. Для значений i=1, 2,..,n вычислить число сочетаний из n по

    i и занести результаты в массив С={С1,С2,..,Сn}, используя

    Ci= n!/(i!(n - i)!). Число n>0 ввести с клавиатуры. Полученный массив вывести на экран.

    1. Сформировать с помощью датчика случайных чисел в диапазоне [0,10] массив из 20 элементов вещественного типа. Вывести его на экран. Вывести элементы массива, большие своих соседей справа и слева.

    2. Написать программу для проверки номера банковской карты по алгоритму Луна (необходимо просуммировать все четные по номеру цифры последовательности, далее прибавить к сумме все нечетные по номеру цифры, помноженные на 2, при этом если произведение получается больше 9, то из него вычитается 9. Сумма должна быть кратной 10). Пример правильного номера – 4276 4400 1336 1511




    1. Контрольные вопросы

      1. Понятие массива.

      2. Объявление массива.

      3. Доступ к элементам массива.

      4. Ввод-вывод массива.

      5. Заполнение массива случайными числами.


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