Главная » Статьи » Программирование » С/С++ |
Массивы Чтобы использовать массив, надо его объявить – выделить место в памяти. Типом массива называется тип массива — это тип входящих в него элементов. Массивы могут быть разных типов — int, float, char, и т.д. Массив объявляют так же, как и обычные переменные, но после имени массива в квадратных скобках записывается его размер. При объявлении массива можно сразу заполнить его начальными значениями, перечисляя их внутри фигурных скобок: Если в списке в фигурных скобках записано меньше чисел, чем элементов в массиве, то оставшиеся элементы заполняются нулями. Если чисел больше, чем надо, транслятор сообщает об ошибке. Например: Для повышения универсальности программы размер массива лучше определять через константу. В этом случае для переделки программы для массива другого размера надо только поменять значение этой константы:
Обращение к элементу массива Каждый элемент массива имеет свой порядковый номер. Чтобы обратиться к элементу массива, надо написать имя массива и затем в квадратных скобках номер нужного элемента. Важно запомнить одно важное правило: Номер элемента массива также называется его индексом. Вот примеры обращения к массиву A: В языке Си не контролируется выход за границы массива, то есть формально вы можете записать что-то в элемент с несуществующим индексом, например, в A[345] или в A[-12]. Однако при этом вы стираете какую-то ячейку в памяти, не относящуюся к массиву, поэтому последствия такого шага непредсказуемы и во многих случаях программа «зависает».
Ввод с клавиатуры и вывод на экран Как же ввести данные в массив? Существует много способов в зависимости от вашей задачи: • элементы массива вводятся с клавиатуры вручную; • массив заполняется случайными числами (например, для моделирования случайных процессов); • элементы массива читаются из файла; • элементы массива поступают через порт с внешнего устройства (например, сканера, модема и т.п.); • массив заполняется в процессе вычислений.
Ввод с клавиатуры применяется в простейших программах, когда объем вводимой информации невелик. Для ввода массива будем использовать цикл for. Напомним, что массив надо предварительно объявить, то есть выделить под него память. Вводить можно столько элементов массива, сколько ячеек памяти выделено. Помните, что элементы массива нумеруются с нуля, поэтому если массив имеет всего 10 элементов, то последний элемент имеет номер 9. Если пытаться записывать в 10-ый элемент, произойдет выход за границы массива, и программа может работать неверно (а, возможно, и «зависнет»). При вводе массива желательно выдать на экран общую подсказку для ввода всего массива и подсказки для каждого элемента. Для умножения элементов массива на 2 надо снова использовать цикл, в котором за один раз обрабатывается 1 элемент массива. Вывод массива на экран выполняется также в цикле for. Элементы выводятся по одному. Если в конце строки-формата в операторе printf поставить пробел, то элементы массива будут напечатаны в строчку, а если символ \n – то в столбик.
Заполнение случайными числами Этот прием используется для моделирования случайных процессов, например, броуновского движения частиц. Пусть требуется заполнить массив равномерно распределенными случайными числами в интервале [a,b]. Поскольку для целых и вещественных чисел способы вычисления случайного числа в заданном интервале отличаются, рассмотрим оба варианта. Для получения случайных чисел с равномерным распределением в интервале [a,b] надо использовать формулу:
k = (rand()*(b - a + 1)/RAND_MAX + a);
Здесь константа RAND_MAX – это максимальное случайное число, которое выдает стандартная функция rand.
Когда массив заполняется случайными числами, обязательно вывести на экран исходный массив.
Пример 1. #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <conio.h> #include <time.h> #define N 10
main() { int i, iar[N]; float far[N]; int a = -10, b = 15; setlocale(LC_ALL,"Russian");
// записать в начале функции main ( после строки с символом [B]{[/B] ) // две следующих строки //SetConsoleCP(1251); //SetConsoleOutputCP(1251); // Заполнить массив случайными числами srand(time(NULL)); // Сброс генератора случайных чисел for ( i = 0; i < N; i++ ) // заполнение массива сл. числами //far[i] = (rand()*(b - a + 1)/RAND_MAX + a); iar[i] = (rand()*(b - a + 1)/RAND_MAX + a); printf("\n primary massiv:\n"); // вывод исходного массива for ( i = 0; i < N; i++ ) printf("%d ", iar[i]); for ( i = 0; i < N; i++ ) // умножить все элементы на 2 iar[i] = iar[i] * 2; printf("\n result:\n"); for ( i = 0; i < N; i++ ) // вывод результата printf("%d ", iar[i]); getch(); } Пояснения к тексту программыsrand(time(NULL)); Сброс генератора случайных чисел с помощью текущего времени. Если его не сбрасывать, программа будет каждый раз выводить одни и те же случайные числа.
Самостоятельно:
1. Создать программу, в которой случайным образом генерируется массив из 20 чисел (в диапазоне от -50.0 до 40.0) типа float. | |
Просмотров: 3440 | | |
Всего комментариев: 0 | |