Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 3

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

28.12.2012, 05:03. Показов 806. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот текст программы
Создайте класс, имитирующий работу биллинговой системы сотового оператора. Объектом
данного класса является лицевой счет абонента. Создайте 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)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.12.2012, 05:03
Ответы с готовыми решениями:

Свой класс для окон. Не могу разобраться с ошибкой
main: #include &quot;MyWin.h&quot; #include &lt;iostream&gt; using namespace std; using namespace mywin; WNDPROC WndProc(HWND, UINT,...

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать
В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива и сумму элементов массива,...

не могу разобраться с ошибкой
Недавно начала изучать джаву. Вот что выдает в дебаге + сам код

2
 Аватар для Nagdiel
117 / 116 / 8
Регистрация: 23.12.2012
Сообщений: 195
28.12.2012, 10:12
Попробуйте изменить определение конструктора.
C++
1
PersonalAccount(unsigned int balance): balance(balance) {}
Например, следующим
C++
1
PersonalAccount(unsigned int _balance): balance(_balance) {}
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
28.12.2012, 10:26
Цитата Сообщение от Nagdiel Посмотреть сообщение
PersonalAccount(unsigned int balance): balance(balance) {}
Да не, так можно писать.

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

Не по теме:

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



Добавлено через 5 минут
Наверное ODR нарушено. Можно попробовать сделать все методы класса inline, или определять их внутри класса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.12.2012, 10:26
Помогаю со студенческими работами здесь

не могу разобраться с ошибкой
Нарушение прав доступа при записи &quot;0x001a0fc0&quot;. не могу понять где ошибка. программа на рекурсию #include &quot;stdafx.h&quot; ...

Не могу разобраться с ошибкой
Выдаёт вот такую ошибку: Вызвано исключение: нарушение доступа для чтения. **mass** было 0xCDDDCDE2., произошло Вот код: ...

Не могу разобраться с ошибкой
Доброго времени суток.Вообщем отрезок задачи в котором по идее двумерный массив должен быть в файле, и программа обращалась к нему...

Не могу разобраться с ошибкой
Программа ханойские башни, нужно что бы выводил графически. Но пишет вот такую ошибку Ошибка 1 error C1083: Не удается открыть файл...

Не могу разобраться с ошибкой
Уже не первый раз сталкиваюсь с такой ошибкой, и ни чего не могу поделать как только заново переделывать проект с нуля. Если кто то...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru