Файл: Федеральное государственное бюджетное образовательное учреждение высшего образования санктпетербургский государственный университет телекоммуникаций им. Проф. М.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 19
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
ИНСТИТУТ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ
Контрольная работа
Конструирование простейшего класса
По дисциплине Технологии программирования
Вариант 9
Фамилия:
Кульминский
Имя:
Максим
Отчество:
Александрович
Курс:
2
Студ. билет №:
1910239
Группа №
АБ-01з
Санкт-Петербург
2021
Файл Printer.cppсодержит главную функцию программы. В нем создаются две переменные класса magazine, одна из них создается при помощи конструктора по умолчанию, другая с помощью конструктора со значением; и массив класса printer, значение свойств элементов массива вводятся с клавиатуры и сохраняются при помощи методов класса. Вывод на экран осуществляется получением свойств класса с помощью методов. Поиск самого дешевого принтера осуществляется при помощи глобальной функции.
Текст файла Printer.cpp:
// Printer.cpp: определяет точку входа для консольного приложения.
//
#include
"stdafx.h"
#include
"printer.h"
#include
#include
#include
"Windows.h"
usingnamespace std;
#define n
4
//константа размерности массива int
_tmain
(
int argc
,
_TCHAR
* argv
[])
{
SetConsoleCP(1251);
// установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251);
// установка кодовой страницы win-cp
1251 в поток вывода printer printer1;
//создание переменной типа класс с использованием конструктора по умолчанию printer printer2(
"HP"
,
"A4"
, 25, 1990);
//создание переменной типа класс с использованием конструктора со значением printer printers[
n
];
//объявления массива типа класс std::
string s;
//объявление переменной строкового типа int a;
//объявление переменной целочисленного типа for
(
int i = 0; i <
n
; i++)
//циклвводаданных
{ cout
<<
"Введите Модель "
<<
i + 1
<<
"го принтера - "
;
//вывод сообщения на экран cin
>>
s;
//ввод с клавиатуры в переменную printers[i].SetModel(s);
//запись модели принтера через метод класса cout
<<
"Введите формат бумаги "
<<
i + 1
<<
"го принтера - "
; cin
>>
s; printers[i].SetFormat(s);
//записьформатабумаги cout
<<
"Введите скорость печати "
<<
i + 1
<<
"го принтера - "
; cin
>>
a; printers[i].SetSpeed(a);
//записьскоростипечати cout
<<
"Введите стоимость "
<<
i + 1
<<
"го принтера - "
; cin
>>
a; printers[i].SetPrice(a);
//записьстоимостипринтера
} cout
<<
endl
<<
endl;
cout
<<
"Конструкторпоумолчанию: "
<<
printer1.GetModel()
<<
", "
<<
printer1.GetFormat()
<<
", "
<<
printer1.GetSpeed()
<<
" листоввминуту,
"
<<
printer1.GetPrice()
<<
" рублей "
<<
endl; cout
<<
"Конструкторсозначением: "
<<
printer2.GetModel()
<<
", "
<<
printer2.GetFormat()
<<
", "
<<
printer2.GetSpeed()
<<
" листоввминуту,
"
<<
printer2.GetPrice()
<<
" рублей "
<<
endl
<<
endl
<<
"Массив:"
<<
endl; for
(
int i = 0; i <
n
; i++)
//циклвыводамассиваданных
{ cout
<<
"Принтер"
<<
i + 1
<<
": "
<<
printers[i].GetModel()
<<
", "
<<
printers[i].GetFormat()
<<
", "
<<
printers[i].GetSpeed()
<<
" листоввминуту, "
<<
printers[i].GetPrice()
<<
" рублей "
<<
endl;} int i = minPrice(printers, n
);
//поиск индекса самого дешёвого принтера
//вывод на экран самого дешевого принтера cout
<<
endl
<<
endl
<<
"Самый дешевый принтер: "
<<
printers[i].GetModel()
<<
", "
<<
printers[i].GetFormat()
<<
", "
<<
printers[i].GetSpeed()
<<
" листов в минуту, "
<<
printers[i].GetPrice()
<<
" рублей "
<<
endl;
//вывод результата system(
"pause"
); return
0;
}
Файл print.cpp содержит функции методов класса, а также глобальную функцию поиска самого дешёвого принтера. Этот файл является файлом реализации класса.
Текстфайлаprint.cpp:
#include
"stdafx.h"
#include
"printer.h"
//конструктор класса со значением, передаем в конструкторе модель, формат бумаги, скорость печати и стоимость принтера printer
::printer(std::
string
Model1
, std::
string
Format1
, int
Speed1
, int
Price1
)
{ model
=
Model1
;
//присваиваеммодель format
=
Format1
;
//присваиваемформатбумаги speed =
Speed1
;
//присваиваем скорость печати price =
Price1
;
//присваиваем стоимость
} void printer
::SetModel(std::
string
Model
)
//методзаписимоделипринтера
{ model
=
Model
;
//задаем модель принтера
} std::
stringprinter
::GetModel()
//метод получения модели принтера
{ return model;
//возвращаем модель принтера
} void printer
::SetFormat(std::
string
Format
)
//методзаписиформатабумаги
{ format
=
Format
;
//задаемформатбумаги
} std::
stringprinter
::GetFormat()
//методполученияформатабумаги
<<
"Конструкторпоумолчанию: "
<<
printer1.GetModel()
<<
", "
<<
printer1.GetFormat()
<<
", "
<<
printer1.GetSpeed()
<<
" листоввминуту,
"
<<
printer1.GetPrice()
<<
" рублей "
<<
endl; cout
<<
"Конструкторсозначением: "
<<
printer2.GetModel()
<<
", "
<<
printer2.GetFormat()
<<
", "
<<
printer2.GetSpeed()
<<
" листоввминуту,
"
<<
printer2.GetPrice()
<<
" рублей "
<<
endl
<<
endl
<<
"Массив:"
<<
endl; for
(
int i = 0; i <
n
; i++)
//циклвыводамассиваданных
{ cout
<<
"Принтер"
<<
i + 1
<<
": "
<<
printers[i].GetModel()
<<
", "
<<
printers[i].GetFormat()
<<
", "
<<
printers[i].GetSpeed()
<<
" листоввминуту, "
<<
printers[i].GetPrice()
<<
" рублей "
<<
endl;} int i = minPrice(printers, n
);
//поиск индекса самого дешёвого принтера
//вывод на экран самого дешевого принтера cout
<<
endl
<<
endl
<<
"Самый дешевый принтер: "
<<
printers[i].GetModel()
<<
", "
<<
printers[i].GetFormat()
<<
", "
<<
printers[i].GetSpeed()
<<
" листов в минуту, "
<<
printers[i].GetPrice()
<<
" рублей "
<<
endl;
//вывод результата system(
"pause"
); return
0;
}
Файл print.cpp содержит функции методов класса, а также глобальную функцию поиска самого дешёвого принтера. Этот файл является файлом реализации класса.
Текстфайлаprint.cpp:
#include
"stdafx.h"
#include
"printer.h"
//конструктор класса со значением, передаем в конструкторе модель, формат бумаги, скорость печати и стоимость принтера printer
::printer(std::
string
Model1
, std::
string
Format1
, int
Speed1
, int
Price1
)
{ model
=
Model1
;
//присваиваеммодель format
=
Format1
;
//присваиваемформатбумаги speed =
Speed1
;
//присваиваем скорость печати price =
Price1
;
//присваиваем стоимость
} void printer
::SetModel(std::
string
Model
)
//методзаписимоделипринтера
{ model
=
Model
;
//задаем модель принтера
} std::
stringprinter
::GetModel()
//метод получения модели принтера
{ return model;
//возвращаем модель принтера
} void printer
::SetFormat(std::
string
Format
)
//методзаписиформатабумаги
{ format
=
Format
;
//задаемформатбумаги
} std::
stringprinter
::GetFormat()
//методполученияформатабумаги
{ return format;
//возвращаем формат бумаги
} void printer
::SetSpeed(
int
Speed
)
//метод записи скорости печати принтера
{ speed =
Speed
;
//присваиваем скорость печати
} int printer
::GetSpeed()
//метод получения скорости печати
{ return speed;
//возвращаем скорость печати
} void printer
::SetPrice(
int
Price
)
//метод записи стоимости принтера
{ price =
Price
;
//присваиваем стоимость принтера
} int printer
::GetPrice()
//метод получения стоимости
{ return price;
//возвращаем стоимость принтера
}
//поиск самого дешевого принтера int minPrice(
printer
* printers
, int sizeArray
)
//передаем исследуемый массив и размерность массива в значениях
{ int min = printers
[0].GetPrice();
//переменная минимальной стоимости int numb = 0;
//переменная индекса самого дешевого принтера for
(
int i = 1; i <
sizeArray
; i++)
//циклпоиска
{ if
(min >
printers
[i].GetPrice())
//если минимальная стоимость меньше стоимости выбранного принтера
{ min = printers
[i].GetPrice();
//то присваиваем минимальное значение стоимости принтера numb = i;
//записываем индекс минимальной стоимости
}
} return numb;
//возвращаем индекс самого дешевого принтера
}
Файл Printer.h содержит класс printer с описанием его свойств и методов. Этот файл является заголовочным файлом класса printer.
ТекстфайлаPrinter.h:
#pragmaonce
#include
//подключение директивы работы со строками class printer
{ public
:
//открытаячастькласса printer(std::
string
Model1 =
"
, std::
string
Format1 =
"
, int speed = 0, int price=0);
//конструкторклассапоумолчанию void
SetModel(std::
string
Model);
//методзаписимоделипринтера
std::
string
GetModel();
//методполучениямоделипринтера void
SetFormat(std::
string
Format);
//методзаписиформатабумаги std::
string
GetFormat();
//метод получения формата бумаги void
SetSpeed(
int
Speed);
//метод записи скорости печати int
GetSpeed();
//метод получения скорости печати void
SetPrice(
int
Price);
//методзаписицены int
GetPrice();
//методполученияцены int numb; private
:
// Модель принтера std::
string model;
// Формат бумаги std::
string format;
// Скорость печати и цена принтера int speed, price;
}; int minPrice(
printer
* printers,
int sizeArray);
//функцияпоискасамогодешёвогопринтера
Результат работы программы Printer.exe представлен на рисунке 1.
Рисунок 1 – Результат работы программы Printer.exe
string
GetModel();
//методполучениямоделипринтера void
SetFormat(std::
string
Format);
//методзаписиформатабумаги std::
string
GetFormat();
//метод получения формата бумаги void
SetSpeed(
int
Speed);
//метод записи скорости печати int
GetSpeed();
//метод получения скорости печати void
SetPrice(
int
Price);
//методзаписицены int
GetPrice();
//методполученияцены int numb; private
:
// Модель принтера std::
string model;
// Формат бумаги std::
string format;
// Скорость печати и цена принтера int speed, price;
}; int minPrice(
printer
* printers,
int sizeArray);
//функцияпоискасамогодешёвогопринтера
Результат работы программы Printer.exe представлен на рисунке 1.
Рисунок 1 – Результат работы программы Printer.exe
Контрольные вопросы:
1) Класс — это пользовательский тип данных, объединяющий данные и алгоритмы для обработки этих данных. Класс моделирует группу каких-либо реальных объектов.
2) Модуль состоит из заголовочного файла и файла реализации
3) Традиционный ввод-вывод через функции printf и scanf.
Потоковый ввод-вывод
4) Инкапсуляция –объединение в классе данных и методов с целью защиты данных, полиморфизм – это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач, наследование – это процесс, посредством которого один объект может приобретать свойства другого.