Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Реализовать метод Bill. Для представления использовать класс Time - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Абстрактные классы. Обьект в строку http://www.cyberforum.ru/cpp-beginners/thread697938.html
Всем доброго вечера, существует следующяя ситуация.. Есть абстрактный класс в котором вирутальная функция,она должна преобразовывать обьект в строку.как это сделать? Вторая функция наооборот должна...
C++ Очереди в С++ Помогите пожалуйста, очень нужно! Вот такое задание. Сформировать динамическую структуру очередь, содержащую данные по студентам в следующем виде: "Фамилия Имя Группа GR RS", где GR – год рождения,... http://www.cyberforum.ru/cpp-beginners/thread697935.html
Создание WinApi функции для нахождения максимального элемента массива в нескольких потоках C++
Задача состоит в следующем: ножно написать программу, которая будет находить максимальное значение массива в нескольких потоках. Я написал вот етот код но он страшно ругается на 8 потоках DWORD...
C++ Что изменить чтобы каждый элемент массива уменьшился на 20?
#include <iostream> using namespace std; int main() { int mas; int i; for (i=0; i<10; i++) { cout << ""<< ":"; cin >> mas; mas=i-20;
C++ Сохранить массив структур в файл http://www.cyberforum.ru/cpp-beginners/thread697915.html
как это правильно организовать? Дана последовательность записей с информацией о сотрудниках предприятия. Каждая запись включает реквизиты: ФИО (фамилия, имя, отчество ); ДР (дата рождения – год,...
C++ Класс для матрицы представленной динам. массивом указателей на строки Матрица переменной размерности, представленная динамическим массивом указателей на строки матрицы (линейные динамические массивы).Нужно создать класс для данного задания.Подскажите как это... подробнее

Показать сообщение отдельно
Serraya
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 20

Реализовать метод Bill. Для представления использовать класс Time - C++

14.11.2012, 22:06. Просмотров 462. Ответов 0
Метки (Все метки)

Добрый вечер, пожалуйста, помогите с задачей:

Реализовать метод Bill. Для представления использовать класс Time. реализовать методы извлечения и изменения полей. Время разговора, которое нужно оплатить, вычисляется в минутах. неполная минута считается полной"

Класс Bill - это разовый платеж за телефонный разговор. класс должен содержать поля:
- Фамилию абонента
- Номер телефона
- Тариф за минуту разговора
- Скидка(у процентах)
- Время начала разговора
- Время окончания разговора
- Сумма к оплате

Класс Time для работы с временем в формате "час:минута:секунда". Обязатеьными операциями есть: вычисление разницы между двумя моментами времени в секундах, сложение времени и заданного количества секунд, отнимание со времени заданного количества секунд, сравнение моментов времени, перевод в секунды, перевод в минуты(с округлением в целую)
-------
Никак не могла понять для чего нужны перегрузки и как их делать, одногруппники помогли, но, теперь не понимаю что писать в мейне, что именно выводить, выводить ли перегрузки и как это вообще делать, я понимаю,что в чужом коде трудно разобраться, но если не трудно, то жду ваших ответов.
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

class Bill //основной класс
{
string family; // фамилия плательщика
int number; // номер телефона
double tarif; // тариф за минуту разговора
int skidka; // скидка в процентах
double summa; // сумма к оплате

public:
class Time_ //вложенный класс
{
int hour0; // время начала разговора(часы)
int hour1; // время окончания разговора(часы)
int min0; // время начала разговора(минуты)
int min1; // время начала разговора(минуты)
public:
Time_();
bool init (int h0, int m0, int h1, int m1) // функция инициализации объектов -инит для тайма
{
if ( (h0<0) || (h0>23) || (h1<0) || (h1>23) || (m1<0) || (m1>59) || (m0<0) || (m0>59)) return false;
else
{
hour0 = h0; // время начала разговора
hour1 = h1; // время окончания разговора
min0 = m0; // время начала разговора(минуты)
min1 = m1; // время начала разговора(минуты)
return true;
}
}
Time_ _init (Time_ & Temp);

string toString()
{
ostringstream B;
B<< "Время начала :" <<hour0<<"ч "<<min0<<"мин "
<< "Время окончания :"<<hour1<<"ч "<<min1<<"мин "<<endl;
return B.str();
}
void read();
void display();
double sum (Bill L) ;
int dlina (Time_ L);
double skidka (Bill L);
friend istream& operator >> (istream &str, Time_ Temp);
friend ostream& operator << (ostream &str, Time_ Temp);
Time_ operator ++ ();
Time_ operator ++ (int);
Time_ operator -- ();
Time_ operator -- (int);
Time_ summation (int Min);
Time_ vuchit (int Min);
};

Time_ vremya;
Bill()
{
family="Рожков"; // фамилия плательщика
number=55-44-83; // номер телефона
tarif=5; // тариф за минуту разговора
skidka=3; // скидка в процентах
summa=358,9; // сумма к оплате
vremya.init (14,01,15,15);
}
bool Init(string f, int n, double t, int s, int h0, int m0,int h1,int m1)
{
if(
(n<0) || (t<=0) || (s<0)
)
return false; // неправильные аргументы - не инициализировать поля
else // аргументы правильные - инициализировать поля
{
family = f; // фамилия плательщика
number = n; // номер телефона
tarif = t; // тариф за минуту разговора
skidka = s; // скидка в процентах
vremya.init (h0,m0,h1,m1);
return true;
}
}

void Init(const Bill &T)
{
*this = T;
}

string toString()
{
ostringstream B;
B <<"Фамилия плательщика: "<<family <<endl
<< "Номер телефона: "<< number<<endl
<< "Тариф(за мин): "<< tarif<<endl
<< "Скидка(%): " << skidka <<"%"<<endl;
return B.str();
}


string toString() const
{
return toString();
}

friend istream& operator >> (istream &str, Bill Temp);
friend ostream& operator << (ostream &str, Bill Temp);
void Display();
};

istream& operator >> (istream &str, Bill Temp)
{
string f; // фамилия плательщика
int n; // номер телефона
double t; // тариф за минуту разговора
int s; // скидка в процентах
double sum;
int h0,m0,h1,m1;
do{
cout<<"Фамилия плательщика: "<<f <<endl
<< "Номер телефона: "<< n<<endl
<< "Тариф(за мин): "<< t<<endl
<< "Скидка(%): " << s <<"%"<<endl;
} while (!Temp.Init(f,n,t,s,h0,m0,h1,m1));
return str;
}

Bill::Time_::Time_()
{
hour0 = 0;
min0 = 0;
hour1=0;
min1=0;
}

void Bill::Time_::display()
{
cout<< "Время начала :" <<hour0<<"ч "<<min0<<"мин "<<endl;
cout<< "Время окончания :"<<hour1<<"ч "<<min1<<"мин "<<endl;
}


void Bill::Time_::read()
{
Bill S;
Bill::Time_ V;
int h0,m0;
int h1,m1;
do
{
cout << "Пожалуйста, введите время начала разговора в часах (хх): "; cin >> h0;
cout << "Пожалуйста, введите время начала разговора в минутах (хх): "; cin >> m0;
cout << "Пожалуйста, введите время окончания разговора в часах (хх): "; cin >> h1;
cout << "Пожалуйста, введите время окончания разговора в минутах (хх): "; cin >> m1;
}
while(!init(h0, m1,h1,m0));
V.hour0=h0;
V.hour1=h1;
V.min0=m0;
V.min1=m1;
(*this)=V;
}

void Bill :: Display()
{

cout<<"Фамилия плательщика: "<<family <<endl
<< "Номер телефона: "<< number<<endl
<< "Тариф(за мин): "<< tarif<<endl
<< "Скидка(%): " << skidka <<"%"<<endl
<< "Время разговора:" ; vremya.display();
}



double Bill:: Time_ :: sum (Bill t)
{
return
(t.vremya.hour1*60+t.vremya.min1-(t.vremya.hour0*60+t.vremya.min0))*(t.tarif-t.tarif*t.skidka/100);
}

int Bill:: Time_ :: dlina (Time_ t)
{

return
(t.hour1*60+t.min1-(t.hour0*60+t.min0));
}

double Bill:: Time_ :: skidka (Bill t)
{
return
(t.vremya.hour1*60+t.vremya.min1-(t.vremya.hour0*60+t.vremya.min0))*(t.tarif)-(t.vremya.hour1*60+t.vremya.min1-(t.vremya.hour0*60+t.vremya.min0))*(t.tarif-t.tarif*t.skidka/100);
}

istream& operator>> (istream &str, Bill::Time_ Temp)
{
Temp.read();
}

ostream& operator<< (ostream &str, Bill::Time_ Temp)
{
return str << Temp.toString();
}

Bill :: Time_ Bill :: Time_ :: operator++ ()
{
return (*this) = (*this).summation(1);
}

Bill :: Time_ Bill :: Time_ :: operator++ (int)
{
Bill :: Time_ Temp;
(*this) = (*this).summation(1);
return Temp._init(*this);
}

Bill :: Time_ Bill :: Time_ :: operator-- ()
{
return (*this) = (*this).vuchit(1);
}

Bill :: Time_ Bill :: Time_ :: operator-- (int)
{
Bill :: Time_ Temp;
(*this) = (*this).vuchit(1);
return Temp._init(*this);
}

Bill :: Time_ Bill :: Time_ :: summation (int Min)
{
(*this).min1 += Min;
}

Bill :: Time_ Bill :: Time_ :: vuchit (int Min)
{
(*this).min1 -= Min;
}


//family = f; // фамилия плательщика
// number = n; // номер телефона
// tarif = t; // тариф за минуту разговора
// skidka = s; // скидка в процентах

//string f, int n, double t, int s, int h0, int m0,int h1,int m1

// -- Функция main --
int main()
{
setlocale(LC_ALL, "Russian");
Bill P;
cout<<"РГЗ 1. Выполнила студентка группы ДИНР-21 Рожкова Екатерина."<<endl<<endl;
cout<<"--------------------Условие задания--------------------\n";
cout<<"Реализовать класс Bill,\n"
<<"используя для представления класс Time."<<endl;
cout<<endl<<"==============================================================="<<endl<<endl;

system ("pause");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru