Разработка программного проекта для заполнения квадратной матрицы порядка n, числами, заданными функцией F(n)
- Главная
- Информатика
- Разработка программного проекта для заполнения квадратной матрицы порядка n, числами, заданными функцией F(n)
Содержание
- 2. Постановка задачи Разработать проект, который заполняет квадратную матрицу порядка n числами, заданными функцией F(n), записывая их
- 3. Математическое описание задачи Для проверки правильности работы разработанных алгоритмов проверим заполненные матрицы порядка 5 с заданными
- 4. Приёмы алгоритмизации задачи Для заполнения квадратной матрицы порядка n значениями функции F по спирали по часовой
- 5. Приёмы алгоритмизации задачи Для заполнения квадратной матрицы порядка n значениями функции F по спирали против часовой
- 6. Список разрабатываемых функций void get_pos(int &coord_y,int &coord_x, int x, int y, DIR dir) – в зависимости
- 7. Блок-схема главной программы Ход соответствующей программы Выводы: 1. Код главной программы имеет линейную структуру, значит, разработанный
- 8. Результаты тестирования программы Как видно программа запустилась без сообщений об ошибках. Это означает, что функция test()
- 9. Заключение В данной работе была создана программа, позволяющая заполнять квадратную матрицу порядка n числами, заданными функцией
- 11. Скачать презентацию
Постановка задачи
Разработать проект, который заполняет квадратную матрицу порядка n числами, заданными
Постановка задачи
Разработать проект, который заполняет квадратную матрицу порядка n числами, заданными
Под функцией F будем понимать функцию, в качестве параметра которой передается текущий заполняемый порядковый номер элемента матрицы. В функции происходят определенные вычисления и возвращаемое из неё число записывается в матрицу.
После заполнения матрицы, её необходимо вывести на экран.
Математическое описание задачи
Для проверки правильности работы разработанных алгоритмов проверим заполненные матрицы
Математическое описание задачи
Для проверки правильности работы разработанных алгоритмов проверим заполненные матрицы
При обходе по часовой стрелке требуется сравнить полученную матрицу с матрицей:
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} };
Приёмы алгоритмизации задачи
Для заполнения квадратной матрицы порядка n значениями функции F
Приёмы алгоритмизации задачи
Для заполнения квадратной матрицы порядка 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
Приёмы алгоритмизации задачи
Для заполнения квадратной матрицы порядка 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.
Список разрабатываемых функций
void get_pos(int &coord_y,int &coord_x, int x, int y, DIR
Список разрабатываемых функций
void get_pos(int &coord_y,int &coord_x, int x, int y, DIR
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.
Блок-схема главной программы
Ход соответствующей программы
Выводы:
1. Код главной программы имеет линейную
Блок-схема главной программы
Ход соответствующей программы
Выводы: 1. Код главной программы имеет линейную
int main()
int n;
cout<<"Введите порядок матрицы: ";
cin>>n;
for(int i=0; i
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;
system("pause");
return 0;
}
Результаты тестирования программы
Как видно программа запустилась без сообщений об ошибках. Это
Результаты тестирования программы
Как видно программа запустилась без сообщений об ошибках. Это
Также видно, что для введенного порядка 3 результат также верен.
Вывод: Результаты расчётов по программе полностью воспроизводят контрольный пример, следовательно программа работает верно и может быть применена для массовых расчётов.
Заключение
В данной работе была создана программа, позволяющая заполнять квадратную матрицу порядка
Заключение
В данной работе была создана программа, позволяющая заполнять квадратную матрицу порядка
Перед началом процесса программирования, на этапе алгоритмизации были словесно описаны шаги алгоритма, которые в дальнейшем были представлены в виде блок-схем.
После этого был осуществлен процесс программирования, т.е. запись алгоритма решаемой задачи на конкретном языке программирования, в данной работе язык программирования был С++.
В конечном итоге, была произведена отладка и тестирование написанной программы на основе контрольных примеров.
Все поставленные задачи были выполнены, соответственно цель работы была достигнута.