Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Заполнение матрицы случайными числами




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 << "Maximal column: " << maxColumn << ", minimal element: " << minElement << "\n";

freeMemory(m, n, matrix);

return 0;

}

Выделение памяти

void allocMemory(int m, int n, int **&matrix)

{

int i;

matrix = new int*[m];

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

matrix[i] = new int[n];

}

}

Заполнение матрицы случайными числами

void fillRandomMatrix(int m, int n, int **matrix)

{

int i, j;

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

for (j = 0; j < n; 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; j < n; j++) {

cursum = 0;

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

cursum += (matrix[i][j] < 0)? -matrix[i][j]: matrix[i][j];

}

if (cursum > sum) {

sum = cursum;

maxCol = j;

}

}

return maxCol;

}

Поиск минимального элемента в столбце

int findMinInColumn(int m, int n, int **matrix, int col)

{

int i, mi;

mi = 0;

for (i = 1; i < m; 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; i < m; i++)

{

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

{

cout<< setw(6)<< matrix[i][j] << ' ';

}

cout << '\n';

}

}

Освобождение памяти

void freeMemory(int m, int n, int **matrix)

{

int i;

for (i = 0; i < m; 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) Разработать программу, читающую из файла данные табулированной функции.

 





Поделиться с друзьями:


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 1344 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Жизнь - это то, что с тобой происходит, пока ты строишь планы. © Джон Леннон
==> читать все изречения...

2323 - | 2092 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.