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

Создайте класс, имитирующий работу биллинговой системы сотового оператора (Не могу разобраться с ошибкой) - C++

Восстановить пароль Регистрация
 
Наталья Щипачев
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 3
28.12.2012, 05:03     Создайте класс, имитирующий работу биллинговой системы сотового оператора (Не могу разобраться с ошибкой) #1
вот текст программы
Создайте класс, имитирующий работу биллинговой системы сотового оператора. Объектом
данного класса является лицевой счет абонента. Создайте 3 объекта класса. Полем класса
является баланс, на котором имеется изначальная сумма (стартовый баланс). Абонент может
расходовать деньги на SMS, голосовую связь и мобильный интернет. Реализуйте в классе методы
для уменьшения баланса (каждый из которых запрашивает, сколько и чего сделал абонент,
например, сколько он отправил СМС). Стоимость одного сообщения, одной минуты разговора и
одного мегабайта известны и заданы константно. В случае достижения нулевого баланса,
программа сообщает пользователю о невозможности предоставления услуги.

В C++ Builder 6

сама программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
//Файл main.cpp
#include "personalaccount.h"
 
int main()
{
    PersonalAccount vasya(1000);
    PersonalAccount petya;
    PersonalAccount volodya(500);
    //Вася платит за 20 смс и 35 минут разговоров
    vasya.paySMS(20);
    vasya.paySpeak(35);
    //Но за 1000 минут разговоров он заплатить уже не может
    vasya.paySpeak(1000);
    //Петя вообще ничего не может оплатить, т. к. у него изначально 0
    petya.paySMS(20);
    return 0;
}//---------------------------------------------------------------------------
 
//Файл pesonalaccount.h
#ifndef PERSONALACCOUNT_H
#define PERSONALACCOUNT_H
 
#include <stdio.h>
 
class PersonalAccount
{
private:
    //тарифы в рублях за минуту
    static const float SPEAK_TARIF;
    static const float INTERNET_TARIF;
    static const float SMS_TARIF;
    //рублёвый баланс абонента
    float balance;
public:
    //создать счёт с такой-то суммой
    PersonalAccount(unsigned int balance): balance(balance) {}
    //создать пустой нулевой счёт
    PersonalAccount();
    //методы оплаты
    bool paySpeak(unsigned int minutes);
    bool paySMS(unsigned int sms);
    bool payInternet(unsigned int megabytes);
};
 
#endif // PERSONALACCOUNT_H
 
//Файл personalaccount.cpp
 
#include "personalaccount.h"
 
const float PersonalAccount::SPEAK_TARIF=1.0;
const float PersonalAccount::SMS_TARIF=0.5;
const float PersonalAccount::INTERNET_TARIF=1.5;
 
PersonalAccount::PersonalAccount()
{
    balance=0;
}
 
bool PersonalAccount::paySpeak(unsigned int minutes)
{
    //Если после выполнения услуги что-то останется на счету
    if ((balance-minutes*SPEAK_TARIF)>=0.0)
    {
        //то выполняем операцию
        balance=balance-minutes*SPEAK_TARIF;
        printf("Произведена оплата %d минут разговоров\n Остаток на счёте: %.2f \n", minutes, balance);
        return true;
    }
    //иначе
    else
    {
        //выводим сообщение об ошибке
        printf("На вашем счету недостаточно средств для оплаты %d минут переговоров\n", minutes);
        return false;
    }
}
 
bool PersonalAccount::paySMS(unsigned int sms)
{
    if ((balance-sms*SMS_TARIF)>0.0)
    {
        balance=balance-sms*SMS_TARIF;
        printf("Произведена оплата %d смс-сообщений разговоров\n Остаток на счёте: %.2f \n", sms, balance);
        return true;
    }
    else
    {
        printf("На вашем счету недостаточно средств для оплаты %d смс-сообщений\n", sms);
        return false;
    }
}
 
bool PersonalAccount::payInternet(unsigned int megabytes)
{
    if ((balance-megabytes*INTERNET_TARIF)>0.0)
    {
        balance=balance-megabytes*INTERNET_TARIF;
        printf("Произведена оплата %d мегабайт трафика\n Остаток на счёте: %.2f \n", megabytes, balance);
        return true;
    }
    else
    {
        printf("На вашем счету недостаточно средств для оплаты %d мегабайт трафика\n", megabytes);
        return false;
    }
}

Выдает ошибки после "personalaccount.h"
и
PersonalAccount vasya(1000);
PersonalAccount petya;
PersonalAccount volodya(500)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2012, 05:03     Создайте класс, имитирующий работу биллинговой системы сотового оператора (Не могу разобраться с ошибкой)
Посмотрите здесь:

C++ Не могу разобраться с ошибкой в проге
Никак не могу разобраться с ошибкой. C++
C++ Не могу разобраться с заданием "Создайте класс Time с конструкторами Time(), Time( int hour)......"
не могу разобраться с ошибкой C++
C++ Класс Int имитирующий встроенный тип int
Создайте класс со специальной версией оператора new, получающей второй аргумент типа string C++
C++ Не могу разобраться с ошибкой
C++ Не могу разобраться с ошибкой

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nagdiel
 Аватар для Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
28.12.2012, 10:12     Создайте класс, имитирующий работу биллинговой системы сотового оператора (Не могу разобраться с ошибкой) #2
Попробуйте изменить определение конструктора.
C++
1
PersonalAccount(unsigned int balance): balance(balance) {}
Например, следующим
C++
1
PersonalAccount(unsigned int _balance): balance(_balance) {}
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.12.2012, 10:26     Создайте класс, имитирующий работу биллинговой системы сотового оператора (Не могу разобраться с ошибкой) #3
Цитата Сообщение от Nagdiel Посмотреть сообщение
PersonalAccount(unsigned int balance): balance(balance) {}
Да не, так можно писать.

Добавлено через 43 секунды

Не по теме:

Хотя, если это Builder... )))



Добавлено через 5 минут
Наверное ODR нарушено. Можно попробовать сделать все методы класса inline, или определять их внутри класса.
Yandex
Объявления
28.12.2012, 10:26     Создайте класс, имитирующий работу биллинговой системы сотового оператора (Не могу разобраться с ошибкой)
Ответ Создать тему
Опции темы

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