Передача массива в функцию
Язык С не допускает копирования всего массива для передачи его в функцию. Тем не менее, можно передавать элемент массива или начальный адрес массива. При передаче начального адреса массива в функцию она может иметь непосредственный доступ к элементам исходного массива и изменять их:
При передаче массива, как параметра в функцию, на самом деле передаётся значение имени массива – указатель на первый элемент массива (Рис. 16). Во внутреннем пространстве имен функции StringCopy() создаются две локальных переменных char *str1 и char *str2, в них при вызове функции копируются значения фактических параметров – current и targe t, интерпретируемые как адреса первых элементов соответствующих массивов. Лабораторная работа № 5. Одномерные массивы Продолжительность – 4 часа. Максимальный рейтинг – 8 баллов. Цели работы Научиться создавать массивы, выделять память под элементы массива и инициировать их значениями. Научиться обращаться к элементам массивов как при помощи оператора имя[индекс], так и посредством методики *(адрес+смещение). Освоить понятия: адрес массива, адрес элемента массива, смещение, индекс. Освоить пошаговую трассировку программы с массивами, научиться отражать в окне watch элементы массива и их адреса. Научиться передавать массив в функцию. Задание на лабораторную работу 1. Написать подпрограмму, выполняющую расчеты в соответствии со своим вариантом индивидуального задания. Выполнение задания реализовать с использованием массива соответствующего типа и размера. 2. Реализовать вызов функции из главной программы и вывод результатов вычисления на экран. Отладить и протестировать программу. В процессе отладки пользоваться средствами пошаговой трассировки кода, продемонстрировать в окне Watch элементы массива и их адреса.
3. Массив описать и инициировать в теле основной программы, передать его в функцию для расчетов. Вывести на экран адрес массива и его элементы. 4. Продемонстрировать в программе обращение к элементам массивов при помощи оператора имя[индекс], так и посредством методики *(адрес+смещение). 5. В отчете отразить процесс трассировки кода, результаты работы программы, листинг программного кода с комментариями, блок-схему программы. Варианты индивидуальных заданий 1. Напишите функцию, которая суммирует последовательность целых чисел размерности N, выделяемого оператором new. 2. Создайте функцию, которая находит наименьшее из чисел массива вещественных чисел размерности N, выделяемого оператором new. Причем, если минимумов несколько, то определять требуется последний из них. 3. Напишите функцию, которая по заданному массиву вещественных чисел размерности N строит массив отклонений от заданного числа Х по формуле: . 4. Создайте функцию, которая находит наибольший элемент и его номер в массиве int * arr* размерности N, выделяемого оператором new, причем, если максимумов несколько, то определять требуется первый из них. 5. Напишите функцию, которая находит сумму и среднее арифметическое элементов массива int * arr заданного размера N. Задайте значения элементов с помощью генератора случайных чисел. 6. Напишите функцию, определяющую произведение всех элементов массива типа double заданного размера N, выделяемого оператором new. Массив проинициализировать набором N случайных чисел в диапазоне 2..5. 7. Напишите функцию, строящую по заданному массиву целых чисел другой массив натуральных логарифмов этих чисел.
8. Создайте функцию, которая находит и возвращает первое встретившееся наименьшее и наибольшее значение из массива вещественных чисел заданного размера N. Задайте значения элементов с помощью генератора случайных чисел из диапазона 30..100. 9. Напишите функцию, вычисляющую среднеквадратичное отклонение элементов массива типа double размерности N по формуле: , где . 10. Создайте функцию, которая находит и возвращает последнее наименьшее и наибольшее значение из набора чисел типа double заданного размера N. 11. Напишите функцию, которая сортирует по возрастанию массив элементов целого типа заданного размера N. Память под массив выделять при помощи оператора new, инициировать массив случайными числами. 12. Создайте функцию, которая сортирует массив символов по убыванию. Память под массив выделять при помощи оператора new, инициировать массив случайными символами. 13. Напишите функцию, которая вычисляет и возвращает количество пар равных друг другу элементов массива целых чисел заданного размера N. 14. Заданы три массива вещественных чисел размерности N – координаты точек в пространстве. Напишите функцию, вычисляющую расстояния от точек массивов до заданной точки , напомним, что . 15. Создайте функцию, которая вычисляет и возвращает количество элементов массива элементов типа long заданного размера N, равных m. 16. Напишите функцию, вычисляющую индексы последнего максимума и первого минимума в массиве вещественных чисел размерности М. 17. Создайте функцию, по имеющемуся массиву ASCII-символов размера N создающую массив кодов этих символов. 18. Напишите функцию, создающуу по одному заданному массиву вещественных чисел размерности N два массива – массив целых частей заданных чисел и массив их дробных частей. 19. Создайте функцию, вычисляющую массив остатков от деления нацело на заданное число А элементов заданного массива целых чисел размерности M. 20. Заданы два массива вещественных чисел размерности N – координаты точек на плоскости. Напишите функцию, вычисляющую расстояния от точек массивов до заданной точки , напомним, что . 21. По заданному массиву абсцисс (чисел типа double) вычислите значения ординат функции , здесь N – размерность массива.
22. Напишите функцию, которая по заданному массиву вещественных чисел размерности М формирует массив модулей разности элементов заданного массива и заданного числа A. 23. Создайте функцию, вычисляющую количество вхождений символа «А» в заданный массив символов длины N. 24. Напишите функцию, вычисляющую номера первого максимума и последнего минимума в массиве целых чисел заданной размерности.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|