Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
зык программирования C++ Лабораторная работа N 6
Лабораторная работа N 6.
"Обработка и модификация двумерных массивов"
Работу выполнить в среде Visual C++, используя шаблон MFC Application.
1. Используя матрицу из 0 и 1 написать программу "Эволюция". Пусть степень элемента [i][j] определяется количеством соседей со значением 1, т.е. степень может принимать значения от 0 до 8. При каждом нажатии клавиши “Enter” программа должна выдавать очередное состояние матрицы, определяемое по правилам:
- если текущий элемент равнялся 1, то он остается 1, если его степень равна 2 или 3;
- если текущий элемент равнялся 0, то он становится равным 1, когда его спепень равна 3.
2. Используя матрицу из 0 и 1 написать программу "Эволюция".
Пусть степень элемента [i][j] определяется количеством соседей со значением 1, т.е. степень может принимать значения от 0 до 8. При каждом нажатии клавиши “Enter” программа должна выдавать очередное состояние матрицы, определяемое по правилам:
- элемент становится 1, когда его степень совпадает со степенью хотя бы одного из двух его соседей.
3. Используя матрицу из 0 и 1 написать программу "Эволюция".
Пусть степень элемента [i][j] определяется количеством соседей со значением 1, т.е. степень может принимать значения от 0 до 8. При каждом нажатии левой кнопки мыши в заданном месте окна программа должна выдавать очередное состояние матрицы, определяемое по правилам:
- текущий элемент остается равным 0, если не меньше половины соседей равны 0.
4. Двумерный массив является "черно-белой фотографией", каждый его элемент - насыщенность некоторой точки (от 0 до некоторого значения Max). После каждого нажатия любой из клавиш изображение сглаживается, т.е. каждый элемент заменяется средним арифметическим его и всех его соседей. В качестве использования вспомогательного массива допускается одномерный массив.
5. Двумерный массив состоит из 0 и 1. Требуется найти и выделить квадрат наибольшего размера из нулей или единиц. После нажатия любой из клавиш генерация повторяется.
6. Двумерный массив состоит из 0 и 1. Требуется найти и выделить прямоугольник наибольшего размера из единиц. После одного нажатия левой кнопки мыши генерация повторяется.
7. Двумерный массив является "черно-белой фотографией", каждый его элемент - насыщенность некоторой точки (от 0 до некоторого значения Max). Требуется для случайно сгенерированного числа N найти и выделить в массиве прямоугольную область с суммой элементов наиболее близкой к числу N.
8. Двумерный массив является "черно-белой фотографией", каждый его элемент - насыщенность некоторой точки (от 0 до некоторого значения Max). Требуется для случайно сгенерированного порядка стороны квадрата N найти квадрат с наибольшей суммой и квадрат с наименьшей суммой.
9. Двумерный массив является "черно-белой фотографией", каждый его элемент - насыщенность некоторой точки (от 0 до некоторого значения Max). Требуется для случайно сгенерированного числа N найти все элементы, у которых хотя бы пара значений меньше N.
10. Двумерный массив является "цветной фотографией", каждый его элемент - номер цвета некоторой точки (от 1 до некоторого значения Max). Номер каждой цифры отображается разным цветом. Будем считать, что если два элемента стоят рядом по вертикали или по горизонтали и имеют одинаковый цвет, то они принадлежат одной области. Требуется найти количество цветных областей, элементы которых равны Max. Счет областей происходит после нажатия клавиши Enter.
11. Задан массив из 0 и 1 . Выбраны произвольные точки в массиве. Если выбраны оба 0 или обе 1, то необходимо определить, существует ли между ними путь при движении от одной точки к другой по горизонтали и вертикали целиком проходящей по 0, если выбраны 0, или по 1, если выбраны 1. Отметить точки и путь. При двойном щелчке мыши производится очередная случайная генерация чисел.
12. Для заданного двумерного массива натуральных чисел требуется определить и отметить, есть ли в нем квадрат, вершины которого обозначены одним и тем же числом. После нажатия клавиши Enter производится поиск вершин очередного квадрата. Программа выводит комментарий, если очередной квадрат не находится. Стороны квадратов не обязательно расположены по вертикали и горизонтали.
13. В произвольной квадратной матрице путем обработки нажатия клавиш организовать движение курсора по строкам, выделение двух любых строк и обмен этих строк в матрице.
14. В произвольной матрице путем обработки нажатия клавиш организовать движение курсора по столбцам и удаление выбранного столбца матрицы.
15. Произвольная матрица состоит из 0 и других чисел. Реализовать алгоритм, который находит строку или столбец из нулей. После нажатия клавиши Enter найденная строка или столбец удаляется.
16. В произвольной матрице путем нажатия левой кнопки мыши запустить алгоритм поиска строки с минимальным элементом a[0][i1] (i1- номер найденной строки), после двойного щелчка запустить алгоритм поиска строки с минимальным элементом a[0][i2] ( i2 - номер найденной строки), после нажатия клавиши производится обмен строк с номерами i1 и i2.
17. Пусть сгенерирована треугольная матрица, т.е. матрица, у которой ниже диагонали расположены 0. Путем случайной перестановки строк и столбцов нарушить треугольность матрицы. После каждого нажатия левой кнопки мыши или клавиши должны переставляться строки или столбцы. Данные перестановки должны восстановить треугольную матрицу.
18. Случайно сгенерирована квадратная матрица. Путем нажатия одной из клавиш привести ее к треугольному виду. В алгоритме предусмотреть перестановку строк, если окажется, что элемент a[0][i] текущей строки i равен 0.
19. Пусть задана прямоугольная матрица. Организовать движение курсора вдоль выбранной строки или вдоль выбранного столбца с накоплением суммы из пройденных курсором элементов. Смещение на один элемент производится после нажатия заранее выбранной клавиши.
20. Пусть задана квадратная матрица. Организовать движение курсора по главной диагонали или по диагонали, которая параллельна главной диагонали. Суммирование элементов производится после щелчка левой кнопки мыши по элементу матрицы, расположенному на выбранной диагонали.
21. Пусть задана прямоугольная матрица. При каждом нажатии клавиши необходимо сместить курсор по пути левый верхний угол - правый нижний угол. Движение должно быть вниз или вправо. Пройденные элементы суммируются. Из двух направлений текущий шаг выбирается, таким образом, чтобы к сумме добавлялось минимальное значение элемента.
22. Пусть задана прямоугольная матрица. Из всех возможных путей из левого верхнего угла в правый нижний угол выбрать путь с минимальной суммой пройденных элементов.