Файл: Отчет по итогам учебной практики Технологической (проектнотехнологической) практики.docx
Добавлен: 17.03.2024
Просмотров: 11
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования Российской Федерации
ФГБОУ ВО «Тверской государственный университет»
Факультет прикладной математики и кибернетики
Направление 09.03.03 – Прикладная информатика
Профиль «Прикладная информатика в экономике»
Отчет
по итогам учебной практики
Технологической (проектно-технологической) практики
2019-2020 уч. год 1 курс 2 семестр
Автор: студент 1 курса 11 группы
Григорьев Сергей Алексеевич
Руководители практики:
к.т.н., доцент кафедры информатики
Волушкова Вера Львовна
_______________________
к.э.н., доцент кафедры математической статистики и системного анализа
Смородова Анна Александровна
_________________________
Оценка: ___________________
Тверь – 2020
Министерство науки и высшего образования Российской Федерации
ФГБОУ ВО «Тверской государственный университет»
Факультет прикладной математики и кибернетики
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ НА ПРАКТИКУ
И РАБОЧИЙ ГРАФИК
Григорьев Сергей Алексеевич
Фамилия, Имя, Отчество студента (-ки) полностью
-
Направление подготовки: 09.03.03 Прикладная информатика
-
Направленность (профиль) программы: Прикладная информатика в экономике
-
Вид практики: Учебная практика 1 курс, 2 семестр
-
Тип практики: технологическя (проектно-технологическая) практика
-
Руководитель ООП: д.ф.-м.н., профессор Язенин А.В.
-
Руководитель практики: доцент кафедры информатики Волушкова Вера Львовна
-
Индивидуальное задание на практику
Создать шаблонный класс односвязный список.
Проверить работу класса, взяв в качестве шаблона – класс Worker (из задания 3)
-
Рабочий график: (составляется в соответствии с программой практики)
Министерство науки и высшего образования Российской Федерации
ФГБОУ ВО «Тверской государственный университет»
Факультет прикладной математики и кибернетики
Направление 09.03.03 – Прикладная информатика
Профиль «Прикладная информатика в экономике»
Отчет
по итогам учебной практики
Технологической (проектно-технологической) практики
2019-2020 уч. год 1 курс 2 семестр
Автор: студент 1 курса 11 группы
Григорьев Сергей Алексеевич
Руководители практики:
к.т.н., доцент кафедры информатики
Волушкова Вера Львовна
_______________________
к.э.н., доцент кафедры математической статистики и системного анализа
Смородова Анна Александровна
_________________________
Оценка: ___________________
Тверь – 2020
Министерство науки и высшего образования Российской Федерации ФГБОУ ВО «Тверской государственный университет» |
Факультет прикладной математики и кибернетики
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ НА ПРАКТИКУ
И РАБОЧИЙ ГРАФИК
Григорьев Сергей Алексеевич
Фамилия, Имя, Отчество студента (-ки) полностью
-
Направление подготовки: 09.03.03 Прикладная информатика -
Направленность (профиль) программы: Прикладная информатика в экономике -
Вид практики: Учебная практика 1 курс, 2 семестр -
Тип практики: технологическя (проектно-технологическая) практика -
Руководитель ООП: д.ф.-м.н., профессор Язенин А.В. -
Руководитель практики: доцент кафедры информатики Волушкова Вера Львовна -
Индивидуальное задание на практику
Создать шаблонный класс односвязный список.
Проверить работу класса, взяв в качестве шаблона – класс Worker (из задания 3)
-
Рабочий график: (составляется в соответствии с программой практики)
№ | Задачи | Планируемые сроки выполнения |
1. | Изучить шаблонный полиморфизм | 8.06.2020-10.06.2020 |
2. | Изучить методы работы с односвязным списком | 11.06.2020-13.06.2020 |
3. | Создать шаблонный класс List | 15.06.2020- 16.06.2020 |
4. | Протестировать шаблонный класс List | 17.06.2020- 20.06.2020 |
5. | | |
6. | | |
7. | | |
8. | | |
| | |
Дата выдачи задания: 8.06.2020
Руководитель практики: ___________________/__Волушкова В.Л,________________
Линейный односвязный список (однонаправленный связный список)
Линейный однонаправленный список — это структура данных, состоящая из элементов одного типа, связанных между собой последовательно посредством указателей. Каждый элемент списка имеет указатель на следующий элемент. Последний элемент списка указывает на NULL. Элемент, на который нет указателя, является первым (головным) элементом списка. Здесь ссылка в каждом узле указывает на следующий узел в списке. В односвязном списке можно передвигаться только в сторону конца списка. Узнать адрес предыдущего элемента, опираясь на содержимое текущего узла, невозможно.
В информатике линейный список обычно определяется как абстрактный тип данных (АТД), формализующий понятие упорядоченной коллекции данных. На практике линейные списки обычно реализуются при помощи массивов и связных списков. Иногда термин «список» неформально используется также как синоним понятия «связный список». К примеру, АТД нетипизированного изменяемого списка может быть определён как набор из конструктора и основных операций:
-
Операция, проверяющая список на пустоту. -
Три операции добавления объекта в список (в начало, конец или внутрь после любого (n-го) элемента списка); -
Операция, вычисляющая первый (головной) элемент списка; -
Операция доступа к списку, состоящему из всех элементов исходного списка, кроме первого.
List.h
#pragma once
#include
#include
using namespace std;
template
struct Node
{
T item;
Node
Node
item = k;
next = n;
}
Node
next = NULL;
}
};
template
class List
{
private:
Node
public:
List();
List(T* a, int);
List(const List& l);
virtual List();
void add(T a);
void del(Node
void delAll();
Node
bool empty();
void addstart(T a);
void delv(T a);
void insert(T a);
int getSize();
void sort();
Node
void reverse();
friend ostream& operator<<(ostream& os, List& l)
{
if (l.head == NULL) os << "list is empty \n";
for (Node
os << i->item << endl;
return os;
}
friend istream& operator>>(istream& is, List& l)
{
if (l.head != NULL)
l.delAll();
l.head = NULL;
Node
Node
T k;
while (is >> k) {
temp = new Node
if (!l.head) l.head = ptr = temp;
else ptr->next = temp;
ptr = temp;
}
if (is.bad()) cout << "bad";
return is;
}
};
template
List
{
head = NULL;
}
template
List
{
head = NULL;
Node
Node
for (int i = 0; i < n; i++)
{
temp = new Node
if (head == NULL)
head = ptr = temp;
else
ptr->next = temp;
ptr = temp;
}
}
template
List
{
head = NULL;
Node
Node
for (Node
{
temp = new Node
if (head == NULL)
head = ptr = temp;
else
ptr->next = temp;
ptr = temp;
}
}
template
List
{
while (head) del(head);
}
template
void List
{
while (head) del(head);
}
template
void List
{
Node
if (head == NULL)
head = temp;
else
{
Node
for (i = head; i->next; i = i->next);
i->next = temp;
}
}
template
void List
{
if (ptr)
{
if (ptr == head)
{
head = head->next;
delete ptr;
}
else
{
Node
for (i = head; i->next != ptr && i->next; i = i->next);
i->next = ptr->next;
delete ptr;
}
}
}
template
Node
{
Node
for (i = head; i && i->item != a; i = i->next);
return i;
}
template
bool List
{
return !head;
}
template
void List
{
Node
head = temp;
}
template
void List
{
del(findNode(a));
}
template
void List
{
Node
while (ptr->next)
{
if (ptr->item > ptr->next->item)
{
cout << "Not sorted!" << endl;
return;
}
ptr = ptr->next;
}
ptr = this->head;
while (ptr->next->item < a)
{
ptr = ptr->next;
}
Node
ptr->next = temp;
}
template
int List
{
int counter;
Node
for (i = head, counter = 0; i; i = i->next, counter++);
return counter;
}
template
void List
{
for (int i = 1; i < getSize(); i++)
{
Node
Node
Node
while (b->item > c->item) {
prev = c;
c = c->next;
}
if (c == b)
continue;
Node
while (ptr->next != b)
ptr = ptr->next;
ptr->next = ptr->next->next;
if (prev)
{
prev->next = b;
b->next = c;
}
else
{
b->next = c;
head = b;
}
}
}
template
Node
{
Node
int counter;
for (i = head, counter = 0; i && counter < id; i = i->next, counter++);
return i;
}
template
void List
{
Node
Node
Node
while (ptr2)
{
ptr->next = temp;
temp = ptr;
ptr = ptr2;
ptr2 = ptr2->next;
}
ptr->next = temp;
head = ptr;
}
Source.cpp
#include
#include
#include "Worker.h"
#include "List.h"
using namespace std;
int main()
{
fstream in("text.txt");
if (!in) cout << "Error" << endl;
List
in >> myList;
cout << myList << endl;
Worker a("Konstantinov", "T.A.", "Programmer", 2010);
Worker b("Alexeev", "R.P.", "Plumber", 1996);
myList.addstart(a);
myList.add(b);
cout << myList << endl;
myList.sort();
cout << "Sort" << endl << myList << endl;
Worker c("Nikolaev", "S.A.", "SMM", 2005);
myList.delv(c);
cout << "Delete" << endl << myList << endl;
myList.insert(c);
cout << "Insert" << endl << myList << endl;
myList.reverse();
cout << "Reverse" << endl << myList << endl;
cout << "Empty? " << myList.empty() << endl;
}