Материал: ОП курсач

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ И СЕТЕЙ

ОЦЕНКА РЕФЕРАТА

РУКОВОДИТЕЛЬ

доцент, канд. тех. наук

Л.Н. Бариков

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОЙ РАБОТЕ

  1. ПРОГРАММА

  2. Формула всего (Таппера)

по дисциплине: Основы программирования

РЕФЕРАТ ВЫПОЛНИЛА

СТУДЕНТКА ГР. №

4716

С.А. Янышева

подпись, дата

инициалы, фамилия

Санкт-Петербург

2018

Оглавление

Введение...................................................................................................................3

  1. Постановка задачи.........................................................................................4

  2. Спецификация...............................................................................................6

    1. Спецификация.....................................................................................6

  3. Текст программы...........................................................................................8

    1. Текст программы...............................................................................10

    2. Результаты тестирования.................................................................20

  4. Описание программы..................................................................................23

    1. Общие сведения.................................................................................25

    2. Функциональное назначение...........................................................25

    3. Описание логической структуры.....................................................25

    4. Спецификация функции...................................................................25

    5. Используемые технические средства..............................................26

    6. Вызов и загрузка................................................................................26

  5. Описание применения.................................................................................28

    1. Назначение программы.....................................................................30

    2. Условие применения.........................................................................30

    3. Описание задачи................................................................................30

    4. Характеристики занимаемой памяти...............................................30

Список используемой литературы.......................................................................31

Введение

Данная работа предназначена для закрепления учебного материала, изучение по курсу «Программирование на языке C++», а также других, значительно более важных задач.

Программа представляет собой подсчет упрощённой версии самореферентной формулы Таппера (формулы всего).

Цель курсового проекта – выработать навыки использования известных алгоритмов для решения конкретных задач, закрепление знаний по программированию на языке С++.

Кроме указанного, курсовая работа предназначена для приобретения навыков по оформлению документации.

  1. Постановка задачи

Используя технологию объектно-ориентированного программирования, разработать программу, реализующую подсчет переменной k, где k является координатой заданного узора на оси ординат.

Программа должна иметь удобный интерфейс, быстро работать.

Формула Таппера (англ. Tupper's self-referential formula) – самореферентная формула, открытая Джеффом Таппером в 2001. Будучи отображённой на плоскости, создаёт собственное изображение.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ И СЕТЕЙ

  1. ПРОГРАММА

  2. Формула всего (Таппера)

Спецификация

  1. 44.4716.18-01

РЕФЕРАТ ВЫПОЛНИЛА

СТУДЕНТКА ГР. №

4716

С.А. Янышева

подпись, дата

инициалы, фамилия

Санкт-Петербург

2018

  1. Спецификация

    1. Спецификация

Обозначение

Наименование

Примечание

44.4716.18-01

Документация программы

Формула всего (Таппера)

Спецификация

44.4716.18-12

Документация программы

Формула всего (Таппера)

Текст программы

44.4716.18-13

Документация программы

Формула всего (Таппера)

Описание программы

44.4716.18-31

Документация программы

Формула всего (Таппера)

Описание применения

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ И СЕТЕЙ

  1. ПРОГРАММА

  2. Формула всего (Таппера)

Текст программы

  1. 44.4716.18-12

РЕФЕРАТ ВЫПОЛНИЛА

СТУДЕНТКА ГР. №

4716

С.А. Янышева

подпись, дата

инициалы, фамилия

Санкт-Петербург

2018

  1. Текст программы

Аннотация

В документе приводится текст программы «формула Таппера», написанной на языке 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" ;