Пример передачи адреса массива в функцию

Дана прямоугольная матрица. Преобразовать матрицу по правилу: переставляем местами первый столбец и последний, затем — второй и предпоследний, и т.д.

#include <iostream.h>

void ReadMatr(int **a, int n, int m); //прототипы функций

void PrintMatr(int **a, int n, int m);

void P(int **a, int n, int m);

void main()

{ int n=3, m=4, i;

int **a;

a = new int*[n];

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

a[i] = new int [m];

ReadMatr(a, n, m);// вызов функции ввода данных

PrintMatr(a, n, m);// вызов функции вывода матрицы на экран

P(a, n, m); // вызов функции перемещения столбцов матрицы

PrintMatr(a, n, m); // вызов функции вывода матрицы на экран

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

delete []a[i];

delete []a;

}

void ReadMatr(int **a, int n, int m) // Ввод матрицы с клавиатуры

{ int i, j;

cout << "Input matriza A(" << n << "*" << m << "):" << endl;

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

for(j = 0; j < m; j++)

cin >>a[i][j];

}

void PrintMatr(int **a, int n, int m) // Вывод матрицы на экран монитора

{ int i, j;

cout << "Matriza:" << endl;

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

{ for(j = 0; j < m; j++)

cout << a[i][j] << " ";

cout << endl;

}

}

void P(int **a, int n, int m) // Перестановка столбцов

{ int i, j, j1, c;

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

for(j = 0, j1 = m - 1; j < j1; j++, j1--)

{ c = a[i][j];

a[i][j] = a[i][j1];

a[i][j1] = c;

}

}

Задание на лабораторную работу: разработать программу, содержащую:

· функцию main(), в которой объявлены переменные и производится ввод-вывод данных (память под массив объявить динамически);

· функции для расчета величин согласно варианту задания. Эти функции необходимо вызвать из главной функции программы main(). Обмен данными между функциями осуществить через параметры и возвращаемое значение функции. Если требуется работать с массивами, то необходимо использовать операторы динамического выделения памяти.

Варианты заданий

Вариант №1

Дана целочисленная квадратная матрица. Определить:

· произведение элементов в тех строках, которые содержат хотя бы один отрицательный элемент;

· максимальное значение на главной диагонали, и заменить нулями строку, в которой это значение расположено.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант №2

Вычислить приближенное значение интеграла по формуле прямоугольников для заданного целого n > 39. Формула прямоугольников:

Вычисление одного слагаемого и общей суммы оформить в виде функций.

________________________________________________________________

Вариант №3

Дана целочисленная квадратная матрица. Определить:

· количество строк, среднее арифметическое элементов которых меньше заданной величины;

· сумму элементов, расположенных выше главной диагонали.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант №4

Дана целочисленная квадратная матрица. Определить:

· номер первой из строк, содержащих хотя бы один положительный элемент;

· упорядочить по возрастанию столбец, сумма элементов которого минимальна.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант №5

Дана целочисленная квадратная матрица. Определить:

· номер последнего из столбцов, не содержащих ни одного отрицательного элемента.

· количество отрицательных элементов в тех строках, которые не содержат нулевых элементов.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант №6

Вычислить приближенное значение интеграла по формуле прямоугольников для заданного целого n > 100. Формула прямоугольников:

Вычисление одного слагаемого и общей суммы оформить в виде функций.

________________________________________________________________

Вариант №7

Дана целочисленная квадратная матрица. Определить:

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

· номер столбца, который не содержит ни одного элемента, большего заданного числа.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант №8

Дана целочисленная квадратная матрица. Определить:

· номер строки, в которой содержится более одного заданного числа;

· максимальный элемент матрицы и поменять местами строку в которой он находится, с последней строкой.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант №9

Для заданного значения x > 0.5 и e =0,00001 вычислить с точностью до e сумму членов бесконечного ряда: где n=1,2,3,…. Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше e. Напечатать полученное значение суммы и значение ln (x). Вычисление одного слагаемого и общей суммы оформить в виде функций, возведение в степень осуществлять в цикле.

________________________________________________________________

Вариант №10

В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· номер максимального элемента;

· произведение элементов массива, расположенных между первым и вторым нулевыми элементами;

· преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечётных позициях, во второй – элементы, стоявшие в чётных позициях.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант №11

В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· номер минимального элемента массива;

· сумму элементов массива, расположенных между первым и вторым отрицательными элементами;

· преобразовать массив таким образом, чтобы в первой его половине располагались элементы, модуль которых не превышает 1, потом все остальные.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант №12

Дана целочисленная квадратная матрица. Определить:

· произведение элементов в тех строках, которые не содержат отрицательных элементов;

· максимум среди сумм элементов диагоналей матрицы.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант№13

Дана целочисленная квадратная матрица. Определить:

· сумму элементов в тех столбцах, которые не содержат отрицательных элементов;

· минимум среди сумм элементов диагоналей матрицы.

Каждый пункт задания оформить в виде отдельной функции.

________________________________________________________________

Вариант№14

Вычислить и напечатать сумму членов бесконечного ряда для заданного значения х с точностью до e =0,00001: Вычисление одного слагаемого и общей суммы оформить в виде функций.

Вариант №15

Дана целочисленная квадратная матрица. Определить:

· сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент;

· номера той строки, в которой сумма положительных элементов максимальна.

Каждый пункт задания оформить в виде отдельной функции.

Контрольные вопросы

1. Каков синтаксис операторов объявления и определения функции? Какой из этих параметров обязателен при работе с функциями и почему?

2. Какое количество функций может присутствовать в программе?

3. Что такое прототип функции, его предназначение?

4. В чем разница между параметрами, переданными по значению и по адресу?

5. Каким образом можно установить значение параметров по умолчанию?

6. Каким образом передают значения из функции в главную функцию программы main()?

7. Существуют ли функции без параметров?

8. Существуют ли ограничения на число параметров подпрограмм?

9. Какого типа может быть значение функции?

10. Где объявляются глобальные и локальные переменные?

11. Какие подпрограммы называют рекурсивными?

12. Что такое граничное условие при организации рекурсивной подпрограммы?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: