Отчёт (1079153)
Текст из файла
Московский государственный технический
университет им. Н.Э. Баумана.
Факультет «Информатика и управление»
Кафедра ИУ5. Курс «Основы информатики»
Отчет по лабораторной работе №5
«Наследование. Множества»
Выполнил: | Проверил: | |
студент группы ИУ5-24 | преподаватель каф. ИУ5 | |
Шевченко Роман | Папшев И.С. | |
Подпись и дата: | Подпись и дата: |
г. Москва, 2008 г.
Постановка задачи
Разработать класс множество (MySet) для выполнения операций над множествами (сложение, вычитание, умножение) на базе класса вектор (MyVector) и функцию main( ) для его тестирования. Класс вектор является динамическим массивом, размер которого может изменяться в процессе выполнения программы автоматически. Добавление элементов производится в конец вектора.
Для ускорения выполнения операций над множествами вектор, используемый классом множество, должен быть отсортирован, а для поиска элементов множества следует использовать метод половинного деления.
Метод AddElement производного класса MySet перегружает аналогичный метод базового класса. MyVector, а элементы elements, size и Size() наследуются из класса MyVector.
Текст программы.
Файл “ MyStack.h”.
#ifndef MyStack_h // защита от повторной комиляции
#include "Data.h"
#include <iostream>
template <class INF,class FRIEND> class ListNode{ //Шаблонный класс ListNode (узел односвязного списк
private:
INF d; //информационная часть узла
ListNode* next; //указатель на следующий узел списка
ListNode(void):next(NULL){};
friend FRIEND;
};
template <class INF > class MyStack{ //Шаблонный класс MyStack на основе односвязного списка.
typedef class ListNode < INF, MyStack <INF> > Node;
Node* top;
public:
MyStack(){ //инициализируем стек
try{
top= new Node;
}catch(bad_alloc xa){
cout <<"Ошибка при выделении памяти.\n";
system("Pause");
exit(EXIT_FAILURE);
}
top= 0;
}
~MyStack() {delete top;} //освободить динамическую память
bool empty(); //если стек пустой возвращает true, иначе folse
bool push(INF n); //заталкиваем объект в стек
bool pop(); //выталкиваем объект из стека
INF top_inf(); //считать информацию из вершины стека
};
template <class INF> bool MyStack<INF>::empty(){
if(top == NULL) return true;
else return false;
}
template <class INF > bool MyStack<INF>::push(INF n){
ListNode < INF, MyStack <INF> >* p;
try{
p= new Node;
}catch(bad_alloc xa){
cout <<"Ошибка при выделении памяти.\n";
system("Pause");
exit(EXIT_FAILURE);
}
p->next= top;
top= p;
p->d= n;
return 0;
}
template <class INF > bool MyStack<INF>::pop(){
ListNode < INF, MyStack <INF> >* p;
p= top;
top= p->next;
delete p;
return 0;
}
template <class INF > INF MyStack<INF>::top_inf(){
return top->d;
}
#define MyStack_h // модуль подключен
#endif
Файл “MyStack.cpp”.
#include "MyStack.h"
#include <iomanip>
#include <iostream>
using namespace std;
void RESIDENT_EVIL(int trup, MyStack<int> &razlojenie);
int main(){
setlocale(0, "russian");
MyStack<int> razlojenie, gnienie;
int zombi;
cout <<"Введите число для разложения ";
cin >>zombi;
RESIDENT_EVIL(zombi, razlojenie);
cout <<"\n Разложене числа " << zombi <<":\n";
while(!razlojenie.empty()){
gnienie.push(razlojenie.top_inf());
cout <<razlojenie.top_inf() <<" ";
razlojenie.pop();
}
cout <<"\n";
while(!gnienie.empty()){
cout <<gnienie.top_inf() <<" ";
gnienie.pop();
}
cout <<"\n";
system("Pause");
}
void RESIDENT_EVIL(int trup, MyStack<int> &razlojenie){
int i;
do{
for(i= 2; i < trup; i++)
if((trup%i) == 0){ //(trup/i = trunc(n/i))
razlojenie.push(i);
trup= (int)(trup/i);
break; // заново (т.е. i присваивалось 2 (i:=2))
}
}while((trup > 2)&&(i != trup)); //(n <= 2)
razlojenie.push(i);
}
Анализ результата.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.