- •Предисловие
- •Лабораторная работа № 1. Структура программы, ввод/вывод
- •Лабораторная работа № 2. Программирование ветвлений
- •Лабораторная работа № 3. Программирование циклов
- •Лабораторная работа № 4. Указатели
- •Лабораторная работа № 5. Одномерные массивы
- •Лабораторная работа № 6. Двумерные массивы
- •Лабораторная работа № 7. Функции
- •Лабораторная работа №8. Строки
- •Библиографический список
- •Приложение Образец оформления отчета по лабораторной работе
- •Лабораторная работа № 3 «циклы»
- •Основы программирования на языке Си
- •190005, С.-Петербург, 1-я Красноармейская ул., д.1
Лабораторная работа № 7. Функции
Цель работы – научиться использовать функции для выполнения однотипных действий над различными данными, правильно задавать параметры функций, передавать указатели на функции в качестве параметров.
Постановка задачи
Написать три программы согласно индивидуальному варианту задания. Для первой и второй программ функции ввода и вывода массивов описывать отдельно, не объединяя с обработкой данных. Можно сохранить эти функции в отдельном файле и использовать в обеих программах, подключив этот файл с помощью директивы #include.
В третьей программе определить функцию Integral() для приближенного вычисления определенного интеграла вида указанным методом. Использовать эту функцию для вычисления значений двух интегралов, передавая подынтегральную функцию в функцию Integral() в качестве параметра.
Формулы численного интегрирования
Пусть на отрезке [a,b] задана непрерывная функция y= f(x). Требуется вычислить определенный интеграл . Разделим отрезок [a,b] точками на n равных частей длины x: . Обозначим далее через значения функции f(x) в точках , т. е. . Значение интеграла определяется по одной из формул:
– формула прямоугольников
– формула трапеций
– формула парабол
– формула Ньютона
Варианты заданий
-
В массивах А (57) и В (7х5) найти максимумы, затем поменять их местами.
-
Вычислить , где S1 – сумма положительных элементов массива А (70), а S2 – сумма отрицательных элементов матрицы В (7х9). Суммы вычислять в одной подпрограмме.
-
, , , метод трапеций
-
Поменять местами минимальные элементы массива А (57) и матрицы В (7х5).
-
Удалить из матрицы А (7х5) все строки, содержащие единицы, а из матрицы В (6х7) – строки, содержащие нули.
-
, , , метод парабол
-
В матрицах А (7х6) и В (6х7) заменить все отрицательные числа их квадратами.
-
Удалить из матрицы А (5х7) все столбцы, содержащие не менее 2 отрицательных элементов, а из матрицы В (7х7) – столбцы, содержащие не менее 3 отрицательных элементов.
-
, , , метод прямоугольников
-
Отсортировать массив М(50) и строки матрицы А(6х7) в порядке убывания
-
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) – строки, сумма элементов которых нечетна.
-
, , , метод трапеций
-
Вычислить , где S1, K1, S2, K2 – сумма и количество положительных элементов массива А (75) и В (60) соответственно.
-
Заменить минимальный элемент массива А (5х8) максимальным элементом массива В (7х6), а минимум массива В - максимальным элементом массива А.
-
, , , метод парабол
-
Подсчитать общее количество отрицательных элементов в массивах X (50) и Y (70).
-
В массивах А (8х6) и В (7х9) к элементам четных столбцов прибавить элемент первого столбца соответствующей строки.
-
, , , метод Ньютона
-
В матрицах А (7х6) и В (5х6) заменить все числа, кратные 3, единицами.
-
Вычислить , где S1 – сумма положительных элементов массива X (50), а S2 – сумма отрицательных элементов массива А (60). Суммы вычислять в одной подпрограмме.
-
, , , метод прямоугольников
-
В матрицах Р (7х8) и Q (8х6) поменять местами первую строку и строчку, в которой находится первый нулевой элемент.
-
Поменять местами наименьшие из положительных элементов массивов А (55) и В (8х7).
-
, , , метод прямоугольников
-
В матрицах А (10х15) и В (15х10) заменить все совершенные числа нулями.
-
. Вычислить , где S1 – сумма положительных элементов массива X (9х6), а S2 – сумма отрицательных элементов массива А (60). Суммы вычислять в одной функции.
-
, , , метод парабол
-
Найти сумму наибольших из отрицательных элементов матрицы А (7х8) и массива В (76).
-
Подсчитать количество элементов массива Р (60), отличающихся от среднего арифметического значения элементов массива М (70) не более чем вдвое, и количество элементов массива М, отличающихся от среднего арифметического значения массива Р не более, чем втрое.
-
, , , метод Ньютона
-
Поменять местами первый максимальный элемент массива А (60) и последний минимальный элемент массива В (85). Поиск максимального и минимального элементов проводить в одной подпрограмме.
-
Задан массив, состоящий из n неотрицательных элементов. Найти в нем индекс элемента, для которого сумма элементов, стоящих до него, наименее отличается от суммы элементов, стоящих после него.
-
, , , метод Ньютона
-
В матрице A(m,n), состоящей из нулей и единиц, найти квадрат заданного размера (квадратную подматрицу), состоящий целиком из нулей.
-
Даны матрицы В (m,n) и С (n,m), заполненные случайным образом. Определить, есть ли в заданных матрицах столбцы, содержащие по два отрицательных элемента. Вывести номера столбцов.
-
, , , метод трапеций
-
Отсортировать нечетные строки матрицы А(6х7) в порядке убывания, а четные – в порядке возрастания.
-
Найти , где Zmin и Smin – сумма минимальных элементов матриц Y(9х12) и Q(5х10), а Zmах и Smах – разница максимальных элементов заданных матриц.
-
, , , метод Ньютона
-
Поменять местами наибольшие по модулю элементы матрицы А (7х8) и массива В (76).
-
Даны матрицы В (m,n) и С (n,m), заполненные случайным образом. Определить, есть ли в заданных матрицах строки, содержащие по два положительных элемента. Вывести номера строк.
-
, , , метод прямоугольников
-
Даны матрицы Q (12x9) и С (7x8), заполненные случайным образом. Вставить после столбцов с максимальными элементами столбцы из нулей.
-
Отсортировать нечетные столбцы матрицы А(6х7) в порядке убывания, а четные – в порядке возрастания.
-
, , , метод парабол
-
Подсчитать общее количество простых чисел среди элементов массивов X (50) и Y (12х5).
-
Удалить из матриц G (6х8) и D (5х7) столбцы, содержащие нулевой элемент.
-
, , , метод трапеций
-
Найти среднее арифметическое всех элементов между минимальным и максимальным элементами в массивах X (7х8) и Y (34).
-
Отсортировать в порядке возрастания строки матриц N (11х5) и M (9х7), номера которых задаются пользователем (не менее трех строк).
-
, , , метод трапеций
-
Отсортировать в порядке убывания столбцы матриц В (9х5) и А (7х9), номера которых задаются пользователем (не менее трех столбцов).
-
Составить программу вычисления произведения двух квадратных целочисленных матриц А и В размером 15х15.
-
, , , метод Ньютона
-
Отсортировать в порядке убывания строки матриц N (10х7) и M (12х11), номера которых задаются пользователем (не менее трех строк).
-
Подсчитать количество элементов матрицы Р (10х12), отличающихся от среднего арифметического значения элементов массива М (100) более чем вдвое, и количество элементов массива М, отличающихся от среднего арифметического значения матрицы Р более, чем втрое.
-
, , , метод трапеций
-
Подсчитать количество элементов массива Р (40), отличающихся от среднего арифметического значения элементов матрицы М (6х9) не более чем на два, и количество элементов матрицы М, отличающихся от среднего арифметического значения массива Р не более, чем на три.
-
Составить программу печати в возрастающем порядке всех элементов массива S (100), входящих в него не менее двух раз.
-
, , , метод прямоугольников
-
Удалить из матриц G (10х11) и D (11х10) строки, содержащие нулевой элемент.
-
Отсортировать четные столбцы матрицы А(8х10) в порядке убывания, а нечетные – в порядке возрастания.
-
, , , метод прямоугольников
-
Отсортировать четные строки матрицы Q(10х10) в порядке убывания, а нечетные – в порядке возрастания.
-
Даны матрицы В (m,n) и С (n,m), заполненные случайным образом. Определить, есть ли в заданных матрицах строки, содержащие равное число положительных и отрицательных элементов. Вывести номера строк.
-
, , , метод Ньютона
-
Даны матрицы Q (12x9) и С (7x8), заполненные случайным образом. Заменить все элементы первых трех столбцов матрицы Q (12x9) и последних трех столбцов матрицы С (7x8) на их квадраты.
-
Дан целочисленный массив H (50). Вставить в него два элемента: первый – после всех элементов, больших данного числа р, а второй – перед всеми элементами, большими данного числа. Значение р вводится с клавиатуры.
-
, , , метод парабол
-
*
-
Описать рекурсивную логическую функцию, которая проверяет, является ли симметричной часть заданного массива F (40), начинающаяся i-м и кончающаяся j-м элементами.
-
Даны два вектора Y и X размерности n = 30. Вычислить , где k – порядковый номер максимального элемента вектора X, а p – порядковый номер максимального элемента вектора Y.
-
, , , метод трапеций
-
*
-
Описать рекурсивную функцию для определения максимального элемента массива W (23), введя вспомогательную рекурсивную функцию, зависящую от k, находящую минимум среди k-последних элементов массива.
-
Даны два вектора Y и X размерности n = 30. Вычислить
-
, , , метод прямоугольников
-
*
-
В матрице A(m,n), состоящей из нулей и единиц, найти квадрат наибольшего размера (квадратную подматрицу), состоящий целиком из нулей.
-
Клеточное поле размером m*n есть результат игры в крестики-нолики на "бесконечном" поле. Проверить, не закончена ли игра выигрышем "крестиков"? Считается, что "крестики" выиграли, если на поле найдется по горизонтали, вертикали или диагонали цепочка, состоящая подряд из 5 крестиков.
-
, , , метод парабол
Контрольные вопросы
-
Что такое функция?
-
Что такое функция типа void?
-
Что такое прототип функции?
-
Чем отличается прототип функции от вызова функции?
-
Чем отличается описание функции от определения функции?
-
Критерии соответствия формальных и фактических параметров.
-
Соответствие типов формальных и фактических параметров.
-
Зачем нужен оператор return?
-
Может ли в функции быть несколько операторов return?
-
Когда необходимо писать оператор return в функции типа void?
-
Что такое побочный эффект функции?
-
Когда используются формальные параметры-указатели? Какими в этом случае должны быть фактические параметры?
-
Как передать массив в функцию? Как передать в функцию матрицу?
-
Как описать функцию, позволяющую работать и с одномерными массивами, и с матрицами?
-
Что такое параметр-константа? Когда используются такие параметры?
-
Что такое указатель на функцию? Как его описать?
-
Как передать функцию в функцию? Что будет являться формальным параметром, что фактическим? Как обратиться к функции, переданной через параметры?
-
Что такое рекурсия? Когда она применяется? Что такое глубина рекурсии?
-
Как описать функцию с переменным числом параметров? Как использовать такую функцию?
-
Какие параметры могут быть у функции main()? Как отлаживать и тестировать программу, содержащую функцию main() с параметрами?