Разделы презентаций


Разработка программного проекта для заполнения квадратной матрицы порядка n,

Постановка задачиРазработать проект, который заполняет квадратную матрицу порядка n числами, заданными функцией F(n), записывая их в нее «по спирали» a) по часовой стрелке, б) против часовой стрелки. Под функцией F будем

Слайды и текст этой презентации

Слайд 1Разработка программного проекта для заполнения квадратной матрицы порядка n, числами,

заданными функцией F(n) при ее разных значениях.
Исполнитель: Иванов Станислав Андреевич,

гр. ПИ-1-17
Разработка программного проекта для заполнения квадратной матрицы порядка n, числами, заданными функцией F(n) при ее разных значениях.Исполнитель:

Слайд 2Постановка задачи
Разработать проект, который заполняет квадратную матрицу порядка n числами,

заданными функцией F(n), записывая их в нее «по спирали» a)

по часовой стрелке, б) против часовой стрелки.
Под функцией F будем понимать функцию, в качестве параметра которой передается текущий заполняемый порядковый номер элемента матрицы. В функции происходят определенные вычисления и возвращаемое из неё число записывается в матрицу.
После заполнения матрицы, её необходимо вывести на экран.
Постановка задачиРазработать проект, который заполняет квадратную матрицу порядка n числами, заданными функцией F(n), записывая их в нее

Слайд 3Математическое описание задачи
Для проверки правильности работы разработанных алгоритмов проверим заполненные

матрицы порядка 5 с заданными вручную (тестовая функция при этом

будет иметь вид f(n)=n).
При обходе по часовой стрелке требуется сравнить полученную матрицу с матрицей:
double t1[5][5] = {{1,2,3,4,5},
{16,17,18,19,6},
{15,24,25,20,7},
{14,23,22,21,8},
{13,12,11,10,9}};
При обходе против часовой стрелки требуется сравнить полученную матрицу с матрицей:
double t2[5][5] = {{1,16,15,14,13},
{2,17,24,23,12},
{3,18,25,22,11},
{4,19,20,21,10},
{5,6,7,8,9} };

Математическое описание задачиДля проверки правильности работы разработанных алгоритмов проверим заполненные матрицы порядка 5 с заданными вручную (тестовая

Слайд 4Приёмы алгоритмизации задачи
Для заполнения квадратной матрицы порядка n значениями функции

F по спирали по часовой стрелке воспользуемся следующим алгоритмом:
повторяем по

числу витков – k (текущий номер витка), число которых равно (n+1)/2
заполняем верхнюю часть витка, индексы для каждого витка следующие: по y – значение постоянное и равно k (нумерация начинается с 0), по x – значения меняются в интервале [k;n-k)
заполняем правую часть витка, индексы для каждого витка следующие: по x – значение постоянное и равно n-1-k, по y – значения меняются в интервале [k+1;n-k)
заполняем нижнюю часть витка, индексы для каждого витка следующие: по y – значение постоянное и равно n-1-k, по x – значения меняются в интервале [n-2-k; k]
заполняем левую часть витка, индексы для каждого витка следующие: по x – значение постоянное и равно k, по y – значения меняются в интервале [n-2-k; k)


Приёмы алгоритмизации задачиДля заполнения квадратной матрицы порядка n значениями функции F по спирали по часовой стрелке воспользуемся

Слайд 5Приёмы алгоритмизации задачи
Для заполнения квадратной матрицы порядка n значениями функции

F по спирали против часовой стрелки воспользуемся следующим алгоритмом:
повторяем по

числу витков – k (текущий номер витка), число которых равно (n+1)/2
заполняем левую часть витка, индексы для каждого витка следующие: по x – значение постоянное и равно k (нумерация начинается с 0), по y – значения меняются в интервале [k;n-k)
заполняем нижнюю часть витка, индексы для каждого витка следующие: по y – значение постоянное и равно n-1-k, по x – значения меняются в интервале [k+1;n-k)
заполняем правую часть витка, индексы для каждого витка следующие: по x – значение постоянное и равно n-1-k, по y – значения меняются в интервале [n-2-k; k]
заполняем верхнюю часть витка, индексы для каждого витка следующие: по y – значение постоянное и равно k, по x – значения меняются в интервале [n-2-k; k)
Как видно из описанных выше алгоритмов их можно объединить в один. Введя параметр – направление заполнения матрицы и в зависимости от него меняя индексы x и y.
Приёмы алгоритмизации задачиДля заполнения квадратной матрицы порядка n значениями функции F по спирали против часовой стрелки воспользуемся

Слайд 6Список разрабатываемых функций
void get_pos(int &coord_y,int &coord_x, int x, int y,

DIR dir) – в зависимости от направления заполнения матрицы, по

разному выполняет присваивание параметрам coord_y и coord_x, переданные значения x и y.
void fill_mas_clockwise(int **mas,func f,int n, DIR dir) – заполняет двумерный массив порядка n числами, полученными из функции f, спиралью по направлению dir.
void print(int **mas,int n) – вывод на экран матрицы порядка n. С помощью функции потокового вывода [3].
int F(int n) – функция расчета элемента матрицы, в зависимости от порядкого номера элемента n.
int test_func (int n) – функция расчета элемента матрицы, в зависимости от порядкого номера элемента n (для функции test).
int test() – функция проводит тесты корректности алгоритмов, если тестирование успешно, то возвращается 1, иначе 0.



Список разрабатываемых функцийvoid get_pos(int &coord_y,int &coord_x, int x, int y, DIR dir) – в зависимости от направления

Слайд 7Блок-схема главной программы
Ход соответствующей программы
Выводы: 1. Код главной программы имеет

линейную структуру, значит, разработанный проект удовлетворяет требованиям структурного подхода. 2. Программа

выводит на экран 2 матрицы порядка n, заполненных по спирали на основании функции F. Первая матрица – обход по часовой стрелке, вторая – против.


int main()
int n;
cout<<"Введите порядок матрицы: ";
cin>>n;
for(int i=0; i mas[i]=new int[n];
fill_mas_clockwise(mas,&F,n,CLOCK);
print(mas,n);
fill_mas_clockwise(mas,&F,n,ANTICLOCK;
print(mas,n);
for(int i=0; i delete[] mas[i];
delete[] mas;
system("pause");
return 0;
}

Блок-схема главной программыХод соответствующей программыВыводы:  1. Код главной программы имеет линейную структуру, значит, разработанный проект удовлетворяет

Слайд 8Результаты тестирования программы
Как видно программа запустилась без сообщений об ошибках.

Это означает, что функция test() завершилась успешно. То есть сгенерированная

спиральные матрицы порядка 1 и 5 оказалась равными заданным вручную матрицам.
Также видно, что для введенного порядка 3 результат также верен.

Вывод: Результаты расчётов по программе полностью воспроизводят контрольный пример, следовательно программа работает верно и может быть применена для массовых расчётов.

Результаты тестирования программыКак видно программа запустилась без сообщений об ошибках. Это означает, что функция test() завершилась успешно.

Слайд 9Заключение
В данной работе была создана программа, позволяющая заполнять квадратную матрицу

порядка n числами, заданными функцией F(n), записывая их в нее

«по спирали» a) по часовой стрелке, б) против часовой стрелки.
Перед началом процесса программирования, на этапе алгоритмизации были словесно описаны шаги алгоритма, которые в дальнейшем были представлены в виде блок-схем.
После этого был осуществлен процесс программирования, т.е. запись алгоритма решаемой задачи на конкретном языке программирования, в данной работе язык программирования был С++.
В конечном итоге, была произведена отладка и тестирование написанной программы на основе контрольных примеров.
Все поставленные задачи были выполнены, соответственно цель работы была достигнута.



ЗаключениеВ данной работе была создана программа, позволяющая заполнять квадратную матрицу порядка n числами, заданными функцией F(n), записывая

Слайд 10Спасибо за внимание

Спасибо за внимание

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика