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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Serraya
0 / 0 / 0
Регистрация: 04.04.2012
Сообщений: 20
#1

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

14.11.2012, 22:06. Просмотров 504. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 22:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Реализовать метод Bill. Для представления использовать класс Time (C++):

Реализовать класс ModelWindow, добавив поле для курсора, используя для представления поля класс Cursor - C++
Реализовать класс ModelWindow, добавив поле для курсора. Используйте для представления поля класс Cursor. (это под типом класс в классе).

Реализовать класс Goods используя для представления цены класс Money - C++
Реализовать класс Goods (пункт 1 ), используя для представления цены класс Money с пункта 2 Реализовать метод уценки товара, уменьшая цену...

Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов - C++
Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов. Собственно вот такая проблема. Не...

Реализовать класс Bill, представляющий собой разовый платеж за телефонный разговор - C++
Всем привет)) Помогите пожалуйста написать программу. Реализовать класс Bill, представляющий собой разовый платеж за телефонный...

Реализовать класс "Матрица", в качестве внутреннего представления которого использовать одномерный массив - C++
Здравствуйте, нужно реализовать класс матриц как один массив, в котором подряд идут элементы всех строк (+ можно индексы начала строк). ...

Реализовать класс ассоциативная таблица для представления списков вида имя=значение - C++
I. Реализовать класс 1. Ассоциативная таблица для представления списков вида имя=значение и словарей fish рыба class ATable { ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 22:06
Привет! Вот еще темы с ответами:

Класс Bill для учета стоимости разговоров - C++
Сделал начало дальше несоображает голова что делать.Вот задание Сделать класс Bill,который есть платежом за розговор.Для представления...

Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). - C++
Помогите пожалуйста написать программу на С++. Просто скоро курсовую сдавать, а классы мы еще не разобрали и не успеваем. Поэтому не знаю...

Реализовать класс Time, который содержит три поля типа int - C++
Всем привет. Помогите пожалуйста с условием:Сам класс и вывод времени есть. Как Перегрузить операцииввода–выводав поток, которые работают с...

Не могу разобраться с заданием "Создайте класс Time с конструкторами Time(), Time( int hour)......" - C++
/* Создайте класс Time с конструкторами Time(), Time( int hour), Time(int hour, int min), Time( int h, int m, int s) и ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru