Задание 1 Массив одномерный. Отчет по выполнению заданий 1 и 2 по статическому и динамическому массивам. По заданию 3 в отчет включить код, комментируя функции. 2
![]()
|
Статический массивМассив – это линейная, однородная структура данных, состоящая из конечного числа элементов. Доступ к элементу массива прямой по индексу. Статический массив – это структура данных, которая создается во время компиляции (т.е. массиву выделяется память). Размер массива нельзя изменять во время работы программы. Формат определения одномерного статического массива [КП] спецификатор базового типа массива Имя массива [количество элементов] Где: Количество элементов – константа или макроопределение Примеры объявления массива #define Len 100 float z[len]; int main() { int x[100]; double y[Len]; } Спецификатор базового типа массива – это любой простой тип языка Си, включая указатель. Представление в памяти массива из Len элементов
Для всех элементов массива общим является имя, но у каждого элемента массива уникальным является индекс. Имя массива - это константный указатель. Он хранит адрес первого байта области памяти, выделенной под элементы массива. Это можно представить так: ![]() Объем памяти выделенной переменной можно рассчитать по формуле Len*объем одного элемента. Доступ к элементу массива осуществляется по имени. Имя элемента массива формируется по следующему правилу: имя массива [индекс элемента] Каждый элемент занимает в памяти отдельную ячейку памяти. Ячейка памяти выделяется переменной, т.о. элемент массива – это отдельная переменная в составе массива. Операции можно выполнять только над элементом массива, допустимые базовым типом массива. Пример заполнения массива с переменной верхней границей при инициализации и при вводе с клавиатуры int main() { int i ,y[4]={5, 6, 7,8}; //инициализация массива // вывод массива for(i=0;i<4;i++) { cout<< y[i]<<″ ″ } //заполнение с клавиатуры const int Len=100; int x[Len], n; cout<<″ Введите количество обрабатываемых элементов массива″; cin>>n; if(n>0 && n { cout<<″Введите ″< for(i=0;i { cin>> x[i]; } } else cout<<″ n должно быть больше нуля″; } Пример заполнения статического массива датчиком случайных чисел из диапазона от 100 до 300. Примечание. 1)Функция rand() генерирует числа в диапазоне от 0 до RAND_MAX. RAND_MAX— это константа, определённая в библиотеке cstdlib.h. Для MVS RAND_MAX= 32767,но оно может быть и больше, в зависимости от компилятора. 2) Формула генерации случайных чисел по заданному диапазону random_number = firs_value + rand() % last_value; где firs_value - минимальное число из желаемого диапазона last_value - ширина выборки 3) Чтобы при различных запусках программы датчик формировал новое значение, необходимо настроить функцию rand(), передав ей новое начальное значение для алгоритма формирования случайного числа. Для этого надо в программу включить вызов функции srand( time(0) );из time.h. до вызова функцииrand(). #include “stdio.h” #include "stdlib.h" #include "time.h" #define Len 100 int main() { int x[Len], n; cout<<″ Введите количество обрабатываемых элементов массива″; cin>>n; if(n>0 && n { srand( time(0) ); for(i=0;i { x[i]=100+rand()%300; } } else cout<<″n должно быть больше нуля″; }} |