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

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

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

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

14.11.2012, 22:06. Просмотров 437. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 22:06     Реализовать метод Bill. Для представления использовать класс Time
Посмотрите здесь:

Создать класс Time для работы со временем C++
C++ Разработать класс для представления сведений о студенте
Класс Time для работы с временем в формате «час:минута:секунда» C++
Разработать класс Point для представления точки на плоскости C++
C++ Класс Bill для учета стоимости разговоров
Написать класс, который эмулирует работу типа float. Реализовать метод А^В C++
Создать класс time для работы со временем C++
C++ Реализовать функции для проверки битового представления типа данных
C++ Реализовать класс Bill, представляющий собой разовый платеж за телефонный разговор
Реализовать класс Time, который содержит три поля типа int C++
Реализовать класс ассоциативная таблица для представления списков вида имя=значение C++
C++ Создать класс для представления и работы с обыкновенными дробями

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 11:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru