void fillRandomMatrix(int m, int n, int **matrix);
Нахождение индекса строки с максимальной суммой модулей //элементов
int findMaxColumn(int m, int n, int **matrix);
Поиск минимального элемента в столбце
int findMinInColumn(int m, int n, int **matrix, int col);
Вывод матрицы
void outputMatrix(int m, int n, int **matrix);
Освободить память
void freeMemory(int m, int n, int **matrix);
int main()
{
srand(time(NULL));
int m, n, maxColumn, minElement;
int **matrix;
matrix = 0;
m = n = 6;
allocMemory(m, n, matrix);
fillRandomMatrix(m, n, matrix);
outputMatrix(m, n, matrix);
maxColumn = findMaxColumn(m, n, matrix);
minElement = findMinInColumn(m, n, matrix, maxColumn);
cout
freeMemory(m, n, matrix);
return 0;
}
Выделение памяти
void allocMemory(int m, int n, int **matrix)
{
int i;
matrix = new int*[m];
for (i = 0; im; i++) {
matrix[i] = new int[n];
}
}
Заполнение матрицы случайными числами
void fillRandomMatrix(int m, int n, int **matrix)
{
int i, j;
for (i = 0; im; i++) {
for (j = 0; jn; j++) {
matrix[i][j] = rand() % 30;
}
}
}
Нахождение индекса строки с максимальной суммой модулей элементов
int findMaxColumn(int m, int n, int **matrix)
{
int maxCol;
int cursum, sum;
int i, j;
sum = 0;
maxCol = 0;
for (j = 1; jn; j++) {
cursum = 0;
for (i = 0; im; i++) {
cursum += (matrix[i][j]0) ? -matrix[i][j] : matrix[i][j];
}
if (cursumsum) {
sum = cursum;
maxCol = j;
}
}
return maxCol;
}
Поиск минимального элемента в столбце
int findMinInColumn(int m, int n, int **matrix, int col)
{
int i, mi;
mi = 0;
for (i = 1; im; i++) {
if (matrix[i][col]matrix[mi][col]) {
mi = i;
}
}
return mi;
}
Вывод матрицы
void outputMatrix(int m, int n, int **matrix)
{
int i, j;
for (i = 0; im; i++)
{
for (j = 0; jn; j++)
{
cout
}
cout
}
}
Освобождение памяти
void freeMemory(int m, int n, int **matrix)
{
int i;
for (i = 0; im; i++) {
delete[] matrix[i];
}
delete[] matrix;
}
В этой программе для выделения места в памяти для динамического массива и заполнения его случайными числами используются аналогичные предыдущей задаче функции. После создания массива и вывода его на экран мы вызываем функцию maxColumn = findMaxColumn(m, n, matrix).
Эта функция имеет тип возврата int, и должна нам вернуть намер строки, в которой находится макимальная по модулю сумма элементов. Поэтому мы можем сохранить возвращенное значение в переменной maxColumn целого типа.
В теле функции мы создаем переменную maxCol, в которой сформируется индекс искомой строки, и переменные cursum, sum в которых будут храниться сумма текущей строки и максимальная сумма соответственно. Находим сумму каждой строки и сравниваем ее с максимальной , индекс сохраняем в переменной maxCol.
Когда функция завершит работу в этой переменной окажется индекс, который функция возвратит, а мы сохраним.Напомню оператор
cursum += (matrix[i][j]0) ? -matrix[i][j] : matrix[i][j];
условный. Мы проходили его ранее.
В данном случае к значению в cursum мы прибавляем значение -matrix[i][j], если этот элемент меньше нуля, и matrix[i][j] если больше. В переменной cursum ,таким образом, сформируется сумма модулей элементов строки.
После того, как мы находим индекс строки, обращаемся к функции
minElement = findMinInColumn(m, n, matrix, maxColumn)
и в этой строке находим минимальный элемент. Функция возвращает его , и мы сохраняем возвращенное значение в переменной minElement.В функцию передаем размер массива, его адрес и номер строки с максимальной суммой модулей элементов. Выводим минимальный элемент этой строки на экран и проверяем , правильно ли работает программа.
Работу по созданию вашей программы следует выполнять поэтапно.
Сначала добавьте в программу только функции по выделению и освобождению памяти, при успешном выполнении- заполните случайными числами и выведите на экран, потом добавляйте по одной функции и контролируйте правильность результата.
Варианты заданий
Присвойте элементам массива F размерностью m ?n случайные числа от -20 до 20. Выведите на экран.Найдите наибольшее среди произведений элементов столбцов массива . Выведите на экран.Замените отрицательные значения нечетных столбцов элементов массива этим значением. Выведите на экран преобразованный массив. | |
Дан целочисленный массив R размерностью n?n. Заполните его случайными числами от-50 до +50. Выведите на экран.Вычислите сумму элементов массива, расположенных ниже главной диагонали. Выведите на экран.Определите количество положительных элементов на главной диагонали . Выведите на экран.Замените им все элементы, расположенные выше главной диагонали. Преобразованный массив выведите на экран. | |
Заполните массив К размерностью m?n случайными числами от -25 до 75. Выведете на экран.Посчитайте произведения всех отрицательных элементов массива. Выведите на экран.Найдите суммы каждого столбца и определить минимальную среди полученных сумм. Выведите на экран.Замените ею отрицательные элементы массива. Преобразованный массив выведите на экран. | |
Присвойте элементам массива D размерностью m?m случайные числа от-10 до 15. Вывести на экран.Посчитать произведения всех положительных элементов массива. Вывести на экран.Отрицательные элементы четных строк массива замените их модулями. Преобразованный массив выведите на экранНайдите максимальный и минимальный элементы массива. Выведите на экран | |
Присвойте элементам массива В размерностью m?n случайные числа от 0 до 90. Выведите на экран.Выберите четные элементы массива, среди них найдите максимальный элемент и выведите его на экранНайдите суммы всех строк массива. Выведите на экран.Замените элементы массива, кратные 5,средним арифметическим этих сумм. Преобразованный массив выведите на экран | |
Присвойте элементам массива Q размерностью m?n случайные числа от -20 до 65. Выведите на экран.Определите минимальный элемент в каждом столбце матрицы . Выведите на экранНайти максимальный элемент массива. Выведите на экран.Замените им отрицательные элементы, расположенные в k-ой строке. Преобразованный массив выведите на экран | |
Присвойте элементам массива Q размерностью m?m случайные числа от -30 до 65. Выведите на экран.Найдите индекс строки с минимальным элементом массива. Выведите на экран.Вычислите сумму элементов, расположенных в четных строках. Выведите на экранЗамените им положительные элементы главной диагонали . Преобразованный массив выведите на экран | |
Присвойте элементам массива В размерностью m?n случайные числа от -20 до 90. Выведите на экран.Найдите количество положительных элементов массива. Выведите на экран.Найдите максимальный элемент k-ой строки . Выведите на экран.Замените им отрицательные элементы, первой строки. Преобразованный массив выведите на экран. | |
Дан целочисленный массив R размерностью n?n. Заполните его случайными числами от-50 до +50. Выведите на экран.Вычислите сумму элементов массива, расположенных выше главной диагонали. Выведите на экран.Определите количество положительных элементов на главнойдиагонали . Выведите на экран.Замените им все элементы, расположенные ниже главной диагонали. Преобразованный массив выведите на экран. | |
Дан действительный массив P размерностью n?n. Заполните его случайными числами от-50 до +80. Выведите на экранНайдите сумму элементов каждого столбца массива . Выведите на экран.Определите минимальную из полученных сумм. Выведите на экран.Замените отрицательные элементы на главной диагонали полученной суммой. Преобразованный массив выведите на экран. | |
Присвойте элементам массива Q размерностью m?n случайные числа от -20 до 80. Выведите на экран.Отрицательные элементы массива, расположенные в четных строках, заменить на квадраты их значений. Преобразованный массив выведите на экран.Найти максимальный элемент среди элементов, расположенных в четных столбцах. Выведите на экран. | |
Присвойте элементам массива Q размерностью m?n случайные числа от -60 до 65. Выведите на экран.Отрицательные элементы массива, расположенные в нечетных строках, заменить на квадраты их значений. Преобразованный массив выведите на экран.Найдите максимальные элементы столбцов массива. Выведите на экран. | |
Присвойте элементам массива А размерностью m?n случайные числа от 25 до 75. Выведите на экран.Выведите на экран отдельно элементы массива кратные 5. Элементам не кратным 5 присвойте значение 0 и выведите на экран преобразованный массив.Найдите наибольшее среди произведений элементов столбцов массива . Выведите на экран. | |
Присвойте элементам массива В размерностью n ?n случайные числа от -20 до 25. Выведите на экран.Найдите наибольшее среди произведений элементов столбцов массива . Выведите на экран.Диагональные элементы массива заменить средними арифметическими соответствующих столбцов. Преобразованный массив выведите на экран | |
Присвойте элементам массива В размерностью n ?n случайные числа от -50 до 50. Выведите на экран.Замените отрицательные элементы, расположенные на главной диагонали и выше нее на их квадраты и посчитать количество замен. Выведите преобразованный массив.Замените все элементы первой строки максимальным элементом массива. Выведите преобразованный массив. | |
Присвойте элементам массива V размерностью m ?n случайные числа от -90 до 65. Выведите на экран.Найти наибольшее значение среди сумм элементов столбцов массива. Выведите на экран.Элементы k –ой строки массива заменить средними арифметическими соответствующих столбцов. Выведите на экран преобразованный массив. |
Контрольные вопросы
1)Что такое функция? Зачем нужно? Приведите пример простейшей функции.
2) Как передаются аргументы в функцию? Что можно передавать в качестве аргумента? Приведите примеры.
3) Что возвращает функция? Приведите примеры.
4) Приведите решение любой из задач данной лабораторной работы кроме своего варианта.
Лабораторная работа №7
Цель: усовершенствовать навыки программирования на примере решения задачи записи и чтения информации из файлов.
Задачи:
1) Изучить вопросы использования текстовых файлов для чтения/записи информации.
2) Разработать программу, табулирующую некую функцию и производящую запись результата в текстовый файл.
3) Разработать программу, читающую из файла данные табулированной функции.
Статьи к прочтению:
Заполнить массив случайными числами. Генератор уникальных случайных чисел. rand. srandДЗ #7
Похожие статьи:
-
Аддитивный генератор случайных чисел
Генератор, формирующий очередное случайное число в соответствии с отношением (3), называется аддитивным: Xn+1=(Xn+Xn-k) mod m. (3) В трехтомнике Кнута…
-
Заполнение рядов чисел, дат или других элементов
1. Выделите первую ячейку диапазона, который требуется заполнить, и введите начальное значение. Чтобы задать для ряда конкретное приращение, выберите…