Технологии программирования. Кульминский АБ-01з КР ТП. Федеральное государственное бюджетное образовательное учреждение высшего образования санктпетербургский государственный университет телекоммуникаций им. Проф. М
Скачать 350.46 Kb.
|
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ) ИНСТИТУТ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ Контрольная работа Конструирование простейшего класса По дисциплине Технологии программирования Вариант 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() //методполученияформатабумаги { 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 Контрольные вопросы: 1) Класс — это пользовательский тип данных, объединяющий данные и алгоритмы для обработки этих данных. Класс моделирует группу каких-либо реальных объектов. 2) Модуль состоит из заголовочного файла и файла реализации 3) Традиционный ввод-вывод через функции printf и scanf. Потоковый ввод-вывод 4) Инкапсуляция –объединение в классе данных и методов с целью защиты данных, полиморфизм – это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач, наследование – это процесс, посредством которого один объект может приобретать свойства другого. |