Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на языке Си. Практикум

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
893 Кб
Скачать

void pech_m(int *x, int n, int m) //определение функц. pech_m

{

int i, j;

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

{

for (j=0; j<m; j++) printf(“%3d”, x[i*m+j]);

printf(“\n”);

}

}

void main(void) // функция main с 2 вызовами функции pech_m

{

int a[10][5], b[15][5];

pech_m(&a[0][0], 10, 5); // передача массива a в функцию pech_m(&b[0][0], 15, 5); // передача массива b в функцию

}

Лабораторная работа №9 Создание функций по обработке массивов

Задача 1.

Задание: Написать программу с использованием функций в соответствии с вариантом. До выполнения задачи внести изменения в n-ую строку или n-ый столбец массива. Число n и новые значения в массив ввести с клавиатуры с помощью функции scanf(). Распечатать массивы до и после изменения.

Вариант задания

1Вычислить и напечатать произведение и количество положительных чисел среди нечетных элементов двумерного массива вещественных чисел размером 6 х 5. Массив инициализировать по формуле

aij cos(i 2) 0.5

Изменения ввести в n-ую строку.

2Вычислить и напечатать произведение и количество отрицательных чисел среди четных элементов двумерного массива вещественных чисел размером 5 х 6.

41

Массив инициализировать по формуле aij sin(i j) 0.1

Изменения ввести в n-ую строку.

3 Вычислить и напечатать сумму и количество положительных элементов среди четных элементов двумерного массива вещественных чисел размером 6 х 7. Массив инициализировать по формуле

aij i * j cos(i)

Изменения ввести в n-ый столбец.

4 Вычислить и напечатать сумму и количество отрицательных элементов среди четных элементов двумерного массива вещественных чисел размером 5 х 6. Массив инициализировать по формуле

aij cos(i 2) 0.5

Изменения ввести в n-ый столбец.

5Вычислить и напечатать произведение и количество положительных элементов среди элементов четных строк двумерного массива вещественных чисел размером 6 х 5. Массив инициализировать по формуле

aij sin(i j) 0.1

Изменения ввести в n-ый столбец.

6 Вычислить и напечатать сумму и количество отрицательных чисел среди элементов нечетных строк двумерного массива вещественных чисел размером 5 х 6. Массив инициализировать по формуле

aij cos(i j) 0.5

Изменения ввести в n-ый столбец.

7 Вычислить и напечатать сумму и количество положительных элементов среди элементов двумерного массива вещественных чисел размером 6 х 6.

Массив инициализировать по формуле aij i cos( j) Изменения ввести в элементы главной диагонали.

42

8 Вычислить и напечатать сумму и количество отрицательных элементов среди элементов двумерного массива вещественных чисел размером 6 х 6.

Массив инициализировать по формуле aij sin(i j) 0.1

Внести изменения в элементы побочной диагонали.

9Вычислить и напечатать произведение отрицательных элементов главной и побочной диагоналей массива D7х7. Сравнить и напечатать, какое произведение больше по абсолютной величине.

Массив инициализировать по формуле

aij sin( j) cos(i)

Изменения ввести в n-ый столбец.

10 Вычислить и напечатать сумму положительных элементов k-ого и m-ого столбца массива D7х7. Сравнить и напечатать, какая сумма больше.

Массив инициализировать по формуле aij cos(i) sin( j)

Изменения ввести в n-ый столбец.

11Вычислить и напечатать произведение и количество отрицательных элементов среди нечетных элементов двумерного массива вещественных чисел размером 7 х 5. Массив инициализировать по формуле

aij cos(i) sin( j)

Изменения ввести в n-ую строку.

12Вычислить и напечатать произведение и количество положительных элементов среди четных элементов двумерного массива вещественных чисел, размером 6 х 6. Массив инициализировать по формуле

aij cos(i j) 0.5

Внести изменения в n-ую строку.

13Вычислить и напечатать произведение и количество отрицательных элементов среди элементов четных строк двумерного массива вещественных чисел размером 5 х 7.

43

Массив инициализировать по формуле aij cos(i j) 0.5

Внести изменения в n-ый столбец.

14 Вычислить и напечатать сумму и количество положительных элементов среди элементов четных строк двумерного массива вещественных чисел размером 7 х 6. Массив инициализировать по формуле

aij cos(i 2 * j) 0.2

Внести изменения в n-ый столбец.

15Вычислить и напечатать сумму положительных и сумму отрицательных элементов двумерного массива вещественных чисел размером 6 х 5.

Массив инициализировать по формуле aij i cos( j) Внести изменения в n-ый столбец.

16Вычислить и напечатать произведение положительных и сумму отрицательных элементов двумерного массива вещественных чисел размером 6 х 5.

Массив инициализировать по формуле aij cos(i) j Внести изменения в n-ый столбец.

17Вычислить и напечатать произведение и количество положительных чисел среди нечетных элементов двумерного массива вещественных чисел размером 6 х 5. Массив инициализировать по формуле

aij cos(i 2) 0.5

Внести изменения в n-ую строку.

18Вычислить и напечатать произведения и количество отрицательных чисел среди четных элементов двумерного массива вещественных чисел размером 5 х 6. Массив инициализировать по формуле

aij cos(i) sin( j)

Внести изменения в n-ую строку.

19 Вычислить и напечатать сумму и количество положительных элементов среди четных элементов двумерного массива вещественных чисел размером 6 х 7.

44

Массив инициализировать по формуле aij cos(i j) 0.5

Внести изменения в n-ый столбец.

20 Вычислить и напечатать сумму и количество отрицательных элементов среди четных элементов двумерного массива вещественных чисел размером 5 х 6. Массив инициализировать по формуле

aij cos(i 2) 0.5

Внести изменения в n-ый столбец.

21Вычислить и напечатать произведение и количество положительных элементов среди элементов четных строк двумерного массива вещественных чисел размером 6 х 5. Массив инициализировать по формуле

aij cos(i j) 0.5

Внести изменения в n-ый столбец.

22 Вычислить и напечатать сумму и количество отрицательных чисел среди элементов нечетных строк двумерного массива вещественных чисел размером 5 х 6. Массив инициализировать по формуле

aij cos(i j) 0.5

Внести изменения в n-ый столбец.

23 Вычислить и напечатать сумму и количество положительных элементов среди элементов двумерного массива вещественных чисел размером 6 х 6.

Массив инициализировать по формуле aij i cos( j) Внести изменения в элементы главной диагонали.

24 Вычислить и напечатать сумму и количество отрицательных элементов среди элементов двумерного массива вещественных чисел размером 6 х 6.

Массив инициализировать по формуле aij sin(i j) 0.1

Внести изменения в элементы побочной диагонали.

45

25Вычислить и напечатать сумму отрицательных элементов главной и побочной диагоналей массива D7х7. Сравнить и напечатать, какая сумма больше.

Массив инициализировать по формуле

aij sin( j) cos(i)

Внести изменения в n-ый столбец.

26Вычислить и напечатать сумму отрицательных элементов k-ого и m-ого столбца массива D7х7. Сравнить и напечатать, какая сумма больше по абсолютной величине. Массив инициализировать по формуле

aij cos(i) sin( j)

Внести изменения в n-ый столбец.

27Вычислить и напечатать произведение и количество отрицательных элементов среди нечетных элементов двумерного массива вещественных чисел размером 7 х 5. Массив инициализировать по формуле

aij sin(i j) 0.1

Внести изменения в n-ую строку.

28Вычислить и напечатать произведение и количество положительных элементов среди четных элементов двумерного массива вещественных чисел размером 6 х 6. Массив инициализировать по формуле

aij cos(i 2 * j) 0.2

Внести изменения в n-ую строку.

29Вычислить и напечатать произведение и количество отрицательных элементов среди элементов четных строк двумерного массива вещественных чисел размером 5 х 7. Массив инициализировать по формуле

aij cos(i 2) 0.5

Внести изменения в n-ый столбец.

30Вычислить печати сумму и количество положительных элементов среди элементов четных строк двумерного массива вещественных чисел размером 7 х 6.

46

Массив инициализировать по формуле aij cos(i 2 * j) 0.2

Внести изменения в n-ый столбец.

Задача 2.

Задание: Написать программу с использованием функций в соответствии с вариантом. Дан двумерный массив размером n x n. Число n ввести с клавиатуры с помощью функции scanf(). Значения элементов задать согласно формуле из Задачи 1. Распечатать исходный и полученный массивы.

Вариант задания

 

 

1

Найти среднее арифметическое элементов каждой строки.

 

Результат разместить в одномерный массив. Напечатать, в

 

какой строке среднее арифметическое больше.

 

 

2

Найти mах элемент среди элементов каждой строки.

 

Результат разместить в одномерный массив.

3

Найти сумму элементов каждой строки. Результат

 

разместить в одномерный массив. Напечатать, в какой

 

строке сумма больше.

4

Найти сумму элементов каждого столбца. Результат

 

разместить в одномерный массив. Напечатать, в каком

 

столбце сумма больше.

5

Найти произведение элементов каждой строки. Результат

 

разместить в одномерный массив.

6

Найти произведение элементов каждого столбца.

 

Результат разместить в одномерный массив. Напечатать, в

 

каком столбце произведение меньше.

7

Найти среднее арифметическое элементов каждого

 

столбца. Результат разместить в одномерный массив.

 

Напечатать, в каком столбце среднее арифметическое

 

больше.

8Найти mах элемент среди элементов каждого столбца. Результат разместить в одномерный массив.

47

9

Найти

среднее

арифметическое

соответствующих

 

элементов k-ой и m-ой строки. Результат разместить в

 

одномерный массив. Числа k и m ввести с клавиатуры с

 

помощью функции scanf().

 

10

Найти сумму соответствующих элементов k-ой и m-ой

 

строк. Результат разместить в одномерный массив. Числа

 

k и m ввести с клавиатуры с помощью функции scanf().

11

Найти

среднее

арифметическое

соответствующих

 

элементов k-ого и m-ого столбцов. Результат разместить в

 

одномерный массив. Числа k и m ввести с клавиатуры с

 

помощью функции scanf().

 

12

Найти сумму соответствующих элементов k-ого и m-ого

 

столбцов. Результат разместить в одномерный массив.

 

Числа k и m ввести с клавиатуры с помощью функции

 

scanf().

 

 

 

13

Найти сумму соответствующих элементов первой строки

 

и последнего столбца. Результат разместить в

 

одномерный массив.

 

14

Найти сумму соответствующих элементов первого

 

столбца и последней строки. Результат разместить в

 

одномерный массив.

 

15

Найти mах элемент данного массива и сумму элементов

 

той строки, в которой mах элемент расположен.

16

Найти min элемент данного массива и сумму элементов

 

того столбца, в котором min элемент расположен

17

Найти mах элемент данного массива и произведение

 

элементов той строки, в которой mах элемент

 

расположен.

 

 

18

Найти mах элемент в k-ой строке данного массива и

 

произведение элементов того столбца, в котором mах

 

элемент расположен.

 

19

Найти mах элемент среди элементов главной диагонали

 

данного массива и сумму элементов той строки, в которой

 

mах элемент расположен.

 

20Найти min элемент среди элементов побочной диагонали данного массива и сумму элементов той строки, в которой min элемент расположен.

48

21Найти max элемент среди элементов k-ого столбца массива сумму элементов той строки, в которой мах элемент расположен.

22Найти max и min элементы среди элементов массива и их среднее арифметическое. Элементы брать по абсолютной величине.

23Найти min элемент среди элементов двух строк массива. Номера строк ввести с клавиатуры с помощью scanf().

24Найти min элемент среди элементов двух столбцов массива. Номера столбцов ввести с клавиатуры с помощью функции scanf().

25Найти среднее арифметическое max и min элементов массива. Номера строк и столбцов, в которых найдены max и min элементы, распечатать.

26Найти среднее геометрическое max и min элементов массива. Номера строк и столбцов, в которых найдены max и min элементы, распечатать.

27Найти max элемент в перыой строке и min элемент в последнем столбце массива. Найти их произведение.

28Найти max элемент в последней строке и min элемент во втором столбце массива. Найти их сумму.

29Найти max элемент по абсолютной величине среди элементов массива. Номера строки и столбца, в которых найден max, распечатать.

30Найти max элемент по абсолютной величине среди элементов главной диагонали массива. Номера строки и столбца, в которых найден max, распечатать.

Лабораторная работа № 10 Функции, выполняющие матричные операции

Задание: Написать программу вычисления матричного выражения (по варианту из работы №4). Каждую матричную операцию оформить в виде отдельной функции. Результат каждой операции выводить на экран с использованием функции печати матрицы. Функция main() должна содержать заполнение исходных матриц и последовательный вызов функций.

49

2.2. Указатели на функции

Идентификатор с открывающейся скобкой трактуется как имя функции. Имя же функции без скобки дает нам адрес этой функции (адрес точки входа в нее). С таким адресом можно работать как с обычным объектом ссылочного типа.

Можно объявить указатель и, присваивая ему адрес разных функций, обращаться к разным функциям из одного места программы:

// Объявление указателя на функцию с двумя параметрами int (*fptr) (int, int);

Можно определить массивы указателей на функции, которые удобно использовать при реализации управления с помощью меню. Каждому пункту меню ставится в соответствие функция, указатель на которую помещается в массив. При выборе из меню нужного действия, необходимая функция вызывается по соответствующему индексу из массива указателей.

// Объявление массива указателей на функции без параметров void (*masfun[3]) (void);

Адрес функции можно передать в качестве фактического параметра в другую функцию. Рассмотрим пример прототипа функции integral для вычисления определенного интеграла, одним из ее параметров будет адрес функции f для расчета подынтегрального выражения.

double f (double);

double integral(double, double, double(*)(double), int);

Лабораторная работа № 11 Использование указателей на функции

Задание: Создать программы для вычисления определенного интеграла одним из трех методов (прямоугольников, трапеций и Симпсона). Границы интервала, число разбиений и признак (номер) метода вводить с клавиатуры. На основе лабораторной работы № 8 написать 3 программы:

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]