МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ И СЕТЕЙ
ОЦЕНКА РЕФЕРАТА
РУКОВОДИТЕЛЬ
доцент, канд. тех. наук |
|
|
|
Л.Н. Бариков |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ |
|
по дисциплине: Основы программирования |
|
|
|
РЕФЕРАТ ВЫПОЛНИЛА
СТУДЕНТКА ГР. № |
4716 |
|
|
|
С.А. Янышева |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург
2018
Оглавление
Введение...................................................................................................................3
Постановка задачи.........................................................................................4
Спецификация...............................................................................................6
Текст программы...........................................................................................8
Результаты тестирования.................................................................20
Описание программы..................................................................................23
Общие сведения.................................................................................25
Функциональное назначение...........................................................25
Описание логической структуры.....................................................25
Спецификация функции...................................................................25
Используемые технические средства..............................................26
Вызов и загрузка................................................................................26
Описание применения.................................................................................28
Назначение программы.....................................................................30
Условие применения.........................................................................30
Описание задачи................................................................................30
Характеристики занимаемой памяти...............................................30
Список используемой литературы.......................................................................31
Данная работа предназначена для закрепления учебного материала, изучение по курсу «Программирование на языке C++», а также других, значительно более важных задач.
Программа представляет собой подсчет упрощённой версии самореферентной формулы Таппера (формулы всего).
Цель курсового проекта – выработать навыки использования известных алгоритмов для решения конкретных задач, закрепление знаний по программированию на языке С++.
Кроме указанного, курсовая работа предназначена для приобретения навыков по оформлению документации.
Используя технологию объектно-ориентированного программирования, разработать программу, реализующую подсчет переменной k, где k является координатой заданного узора на оси ординат.
Программа должна иметь удобный интерфейс, быстро работать.
Формула Таппера (англ. Tupper's self-referential formula) – самореферентная формула, открытая Джеффом Таппером в 2001. Будучи отображённой на плоскости, создаёт собственное изображение.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ И СЕТЕЙ
|
Спецификация |
|
РЕФЕРАТ ВЫПОЛНИЛА
СТУДЕНТКА ГР. № |
4716 |
|
|
|
С.А. Янышева |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург
2018
Обозначение |
Наименование |
Примечание |
44.4716.18-01 |
Документация программы Формула всего (Таппера) Спецификация
|
|
44.4716.18-12 |
Документация программы Формула всего (Таппера) Текст программы
|
|
44.4716.18-13 |
Документация программы Формула всего (Таппера) Описание программы
|
|
44.4716.18-31 |
Документация программы Формула всего (Таппера) Описание применения
|
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ И СЕТЕЙ
|
Текст программы |
|
РЕФЕРАТ ВЫПОЛНИЛА
СТУДЕНТКА ГР. № |
4716 |
|
|
|
С.А. Янышева |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург
2018
Текст программы
Аннотация
В документе приводится текст программы «формула Таппера», написанной на языке C++, а также результаты тестирования.
3.1 Текст программы
3.2 Результаты тестирования
3.1 текст программы
gotoxy.h
#include <iostream>
#include <windows.h>
#include <time.h>
#include <conio.h>
#include <math.h>
#include <ctime>
#include <string>
#include <fstream>
const int N = 5;
const int M = 10;
int map [N][M] = {0}; //размер поля
int x = 0, y = 0; //точка начала
int dir = 0; //поворот кисти
int size_point; //размер кисти
int ch, q = 0;
using std::cout;
using std::cin;
using std::endl;
//передвижение курсора
void gotoxy (int x, int y)
{
COORD p = {x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
}
//положение курсора
void point_show(int x, int y, int dir, int size_point)
{
for (int i = 0; i < size_point; i++)
{
gotoxy(x,y);
cout <<'#';
switch (dir)
{
case 0:
x++;
break;
case 1:
y++;
break;
case 2:
x--;
break;
case 3:
y--;
break;
}
}
}
//проверка границ
bool point_in_map(int x, int y, int dir, int size_point)
{
bool in_map = 1;
for (int i=0; i<size_point; i++)
{
if (x<0||y<0||x>=M||y>=N)
{
in_map = 0;
break;
}
switch (dir)
{
case 0:
x++;
break;
case 1:
y++;
break;
case 2:
x--;
break;
case 3:
y--;
break;
}
}
return in_map;
}
set_point.h
//поставновка (созранение точки) точки
bool set_point(int map[N][M], int x, int y, int dir, int size_point)
{
int Points_id = 1;
int Points[10] = {0};
int temp_x = x;
int temp_y = y;
bool setting_is_possible = 1;
for (int i=0; i<size_point; i++)
{
if (x<0||y<0||x>=M||y>=N)
{
setting_is_possible = 0;
break;
}
switch (dir)
{
case 0:
x++;
break;
case 1:
y++;
break;
case 2:
x--;
break;
case 3:
y--;
break;
}
}
if (setting_is_possible == 1)
{
x = temp_x;
y = temp_y;
for (int i = 0; i < size_point; i++)
{
map[y][x] = Points_id;
switch (dir)
{
case 0:
x++;
break;
case 1:
y++;
break;
case 2:
x--;
break;
case 3:
y--;
break;
}
}
Points[Points_id] = size_point;
Points_id++;
}
return setting_is_possible;
}
main.cpp:
int main()
{//17*106
int tap [17][106] {
{0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1},
{1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,1,1,1,0,0,1,1,1,0,1,1,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1},
{0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1},
{0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,1,0,1,0,1,0,1,1,1,0,1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1},
{0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,0,1},
{1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,1},
{0,0,0,0,0,1,0,0,1,0,1,1,0,1,0,0,0,1,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1},
{1,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1},
{0,0,0,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1},
{1,1,0,0,0,0,1,0,1,0,1,0,1,0,1,0,0,1,1,0,0,0,1,1,1,0,1,0,0,0,1,0,1,0,1,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1},
{0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1},
{0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1},
{1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1},
{1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
{0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1},
{0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1}};
int var;
int q = 0;
setlocale(LC_ALL,"Russian") ;
for (;;)
{//Выбор вида действия с содержимым файла
cout << "\n Выберите вид действия:" << endl ;
cout << " 1 - Вывести формулу Таппера" << endl ;
cout << " 2 - Рисовать" << endl ;
cout << " 3 - Выход" << endl ;
cout << " Введите вид действия ->" ;
cin >> var ;
system("cls");
switch(var)
{default:break ;
case 1:
{
for (int j=1; j<18; j++)
{cout << endl;
for (int i=1; i<107; i++)
{
if (tap[j-1][i-1] == 0)
{
cout << '.' ;
}
else
{
cout << '#';
}
}
}
cout << endl << endl;
}
break ;
case 2:
{
cout << "Ведите размер кисти (в дальнейшем его изменить невозможно) : \n" ;