ЛР2_Дроби (Архив готовых лабораторных работ для ИУ)
Описание файла
Файл "ЛР2_Дроби" внутри архива находится в следующих папках: Архив готовых лабораторных работ для ИУ, 1, задания. Документ из архива "Архив готовых лабораторных работ для ИУ", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "ЛР2_Дроби"
Текст из документа "ЛР2_Дроби"
Лабораторная работа 2
Задание. Создать класс для работы с обыкновенными дробями. Все операции, которые должны выполняться с дробями, включены в программу в приложении 1.
Числитель и знаменатель дроби имеют тип int.
Дроби вводятся как строка, имеющая вид:
- для дробей с целой частью: знак, целая часть, пробел, числитель, слэш (‘/’), знаменатель,. например: -2 6/18, 5 9/3, 2 4/1.
- для дробей без целой части: знак, числитель, слэш (‘/’), знаменатель,
например: 3/4, -9/3, -8/6 (знаменатель всегда положительный).
Значения представленных выше дробей на экране при выводе должны иметь вид:
-2 1/3, 8, 6.
3/4, -3, -1 1/3.
При выводе и после выполнения арифметических операций дроби сокращаются, то есть числитель и знаменатель не должны иметь общих множителей.
Перегрузить операции '+', '+=' для сложения дроби и целого в любых сочетаниях (дробь+целое, целое+дробь, дробь+дробь).
Перегрузить операции '+', '+=' для сложения дроби и double в любых сочетаниях (дробь+double, double+дробь). Преобразование double-дробь должно выполняться с точностью до N_DEC десятичных знаков после запятой, где N_DEC – целочисленная константа, задаваемая пользователем. Задайте значение по умолчанию N_DEC=4.
Для инициализации объектов разрабатываемого класса обыкновенных дробей предусмотреть соответствующие конструкторы (с одним аргументом типа char*, с одним аргументом типа double и с двумя аргументами типа int, которые имеют значения по умолчанию).
При перегрузке операций использовать функции - члены класса, а где это невозможно, то функции - друзья класса.
Для обеспечения более удобного контроля результатов выполнения программы вставьте в конструкторы и перегруженные операции операторы вывода, идентифицирующие выполняемую функцию.
Требования к отчету. Отчет должен содержать следующие разделы:
-
«Постановка задачи», в котором на основании задания уточняются задачи, для решения которых предполагается использовать разрабатываемый класс.
-
«Разработка интерфейса класса», в котором описываются и обосновываются состав полей и методов класса, прототипы методов. Интерфейс класса должен обеспечить выполнение функции main() из Приложения 1
-
«Разработка алгоритма», в котором должны быть приведены блок-схемы алгоритма вывода дробей и алгоритма сокращения дробей.
-
«Текст программы», в котором приведены исходные тексты разработанной программы. При защите лабораторной работы студент должен уметь объяснить назначение каждого оператора разработанной им программы.
-
«Анализ результатов», в котором приводятся, распечатка результатов выполнения программы main() и анализ результатов.
Приложение 1.
//Лаб.2 Класс для работы с обыкновенными дробями.
// Разработать класс обыкновенных дробей fraction
//(описание класса - файл fraction.h и реализацию методов класса - файл //fraction.cpp) для выполнения приведенной ниже функции main(), в которой //проверяются все предполагаемые варианты использования класса.
#include <iostream>
#include "fraction.h"
#include "fraction.cpp"
using namespace std;
void main()
{
setlocale(0,"russian");
//ввод дроби с клавиатуры
cout<<"Введите дробь: \n";
fraction z;
cin>>z;
cout<<"z="<<z<<endl;
cout<<”Проверка конструкторов”<<endl;
fraction fr1(10,14),fr2;
cout<<"fr2="<<fr2<<endl;
cout<<"fr1="<<fr1<<endl;
fraction fr="-1 4/8";
cout<<"fr="<<fr<<endl;
fraction x(z),y;
cout<<"x="<<x<<endl;
double dbl=-1.25;
fraction f=dbl;
cout<<"f="<<f<<endl;
cout<<”Проверка перегруженных операций ‘+’”<<endl;
y=x+z;
cout<<"y="<<y<<endl;
y+=x;
f+=dbl/2;
cout<<"f="<<f<<endl;
y=x+dbl;
cout<<"y="<<y<<endl;
y=dbl+y;
cout<<"y="<<y<<endl;
y+=dbl;
cout<<"y="<<y<<endl;
int i=5;
y+=i;
cout<<"y="<<y<<endl;
y=i+x;
cout<<"y="<<y<<endl;
y=x+i;
cout<<"y="<<y<<endl;
y+=dbl+i+x;
cout<<"y="<<y<<endl;
}