Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
 Аватар для serezhka1111
0 / 0 / 1
Регистрация: 15.06.2015
Сообщений: 33

Не получается создать класс Account из книги Дейтелов

12.07.2015, 14:30. Показов 4328. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача:

Создайте класс с именем Account, которым мог бы воспользоваться банк для представления банковских счетов своих клиентов. Ваш класс должен иметь один элемент данных типа int для представления банковского баланса.Класс должен предусматривать конструктор для инициализации элемента данных. Конструктор должен подтверждать значение начального баланса и гарантировать, что оно больше или равно 0. Если нет, баланс должен устанавливаться равным 0, и конструктор должен выводить сообщение об ошибке, указывающее,что начальный баланс недействителен. В классе должны быть предусмотрены три элемент-функции. Функция credit должна добавлять указанную сумму из текущего баланса. Функция debit должна снимать деньги со счета, предварительно убедившись, что указанная сумма не превосходит баланса счета. Если превосходит, баланс нужно оставить без изменений и функция должна вывести сообщение вроде "Запрошенная сумма превышает баланс счета". Функция getBalance должна возвращать текущий баланс. Напишите программу, которая создает два объекта класса Account и тестирует элемент-функции класса.

Файл Account.h

C++
1
2
3
4
5
6
7
8
9
10
class Account
{
public:
    Account(int);
    void setCreditBalance(int);
    void getDebit(int);
    int getBalance();
private:
    int bankBalance;
};
Файл Functions.cpp

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
#include <iostream>
using std::cout;
using std::endl;
 
#include "Account.h"
 
Account::Account(int balance)
     {
        setCreditBalance(balance);
     }
 
void Account::setCreditBalance(int balance)
{
    if (balance >= 0)
        bankBalance = balance;
    if (balance < 0)
    {
        bankBalance = 0;
        cout << "Current balance is not active" << endl;
    }
}
 
void Account::getDebit(int sum)
{
    if (sum <= bankBalance)
        bankBalance = bankBalance - sum;
    if (sum > bankBalance)
        cout << "Запрошенная сумма превышает баланс счета" << endl;
}
 
int Account::getBalance()
{
    return bankBalance;
}
Файл Account.cpp

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using std::cout;
using std::endl;
 
#include "Account.h"
 
int main()
{
    Account account1
}
Мне вот непонятно как инициализировать объекты типа int. В книжке пример со строкой, и там понятно:
GradeBook gradeBook("Мой текст"). А с intом тоже нужно в скобках задавать значение?

Кроме того, хотел бы узнать, правильно ли я пишу или нет, и что нужно отредактировать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2015, 14:30
Ответы с готовыми решениями:

Создать класс Account. Задача из книги Дейтелов "Как програмировать на С++"
Начал изучение С++, прочитал главу &quot;Введение в классы и объекты&quot; в книге Дейтелов &quot;Как програмировать на С++&quot;, ничего не поняв...

Реализовать класс Account моделирующий операции с банковским счётом (по книге Дейтелов)
Начал изучать С++ по Дейтелам, застрял на одной задаче. Я считаю, что проблема в set-функции, но на 100% не уверен, перечитал несколько раз...

Задача из книги Дейтелов
Столкнулся с решением следующей программы, в мысли приходит только примитивное и решения с огромным количеством строк. Как можно...

2
 Аватар для dima55501
31 / 35 / 11
Регистрация: 14.07.2013
Сообщений: 146
12.07.2015, 15:00
serezhka1111, да, числа указываются так же в скобках. Из кода, немного необычно у Вас выглядит конструктор. Я, конечно, давно уже не читал книжки по С и, возможно, что то подзабыл, но я не помню таких ситуаций, когда параметр конструктора передается методу класса. Попробуйте непосредственно в конструкторе произвести всю инициализацию, которая вам нужна.
1
 Аватар для serezhka1111
0 / 0 / 1
Регистрация: 15.06.2015
Сообщений: 33
12.07.2015, 17:04  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
//Определение класса
class Account
{
public:
    Account(int);
    void Credit(int);//функция устанавливает баланс после внесения денег
    void Debit(int);//функция устанавливает баланс после снятия денег
    int getBalance();//функция получает текущий баланс
private:
    int balance;
};
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
//Определения элемент-функций класса Account
//Файл содержит реализацию функций, прототипы которых объявлены в Account.h
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
 
 
#include "Account.h"
 
Account::Account(int _balance)
     {
         if (_balance >= 0)
         {
             balance = _balance;
             cout << "Your balance is " << balance << " credits" << endl;
         }
             if (_balance < 0)
             {
                 balance = 0;
                 cout << "Error! Your balance is not correct!" << endl;
             }
     }
 
void Account::Credit(int _balance)
{
    balance = balance + _balance;
    cout << "You have " << _balance << " credits to your balance" << endl;
}
 
void Account::Debit(int _balance)
{
    if (_balance <= balance)
        balance = balance - _balance;
    if (_balance > balance)
        cout << "Запрошенная сумма превышает баланс счета" << endl;
}
 
int Account::getBalance()
{
    return balance;
}
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
//Тестирование класса Account
#include <iostream>
using std::cout;
using std::endl;
 
#include "Account.h"
#include <conio.h>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    Account account1(100);
 
 
    cout << "Account`s initial balance is: " << account1.getBalance() << endl;
 
    account1.Credit(50);
 
    cout << "Текущий баланс после добавления: " << account1.getBalance() << endl;
 
    account1.Debit(500);
 
    cout << "Текущий баланс после снятия: " << account1.getBalance() << endl;
    system("pause");
    return 0;
}
Вот, исправил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2015, 17:04
Помогаю со студенческими работами здесь

Нужны упражнения из книги Дейтелов
Всем привет! Пытаюсь своими силами изучить с++, пользуюсь книгой Дейтлов и компилятором VS Studio 2013 ...скиньте пожалуйста ответы к...

Ошибка в программе из книги Дейтелов
Программа из книжки Дейтелов. Среда разработки - wxDev-C++. Выдаёт ошибку, никак не могу её найти. #include &lt;iostream&gt; #include...

Ошибка в примере из книги Дейтелов
Создал Windows Form проект в VS 2012, в файл Form1.cs переписал пример из книги Дейтелов &quot;C# в подлиннике&quot;. using System; using...

Задача из книги Дейтелов Как программировать на C++
Задание: модифицируйте приложение, чтобы оно подтверждало действительность ввода.При любом вводе, даже если введено не 1 и не 2,...

Создание класса (упражнение из книги Дейтелов)
В книге Дейтелов в разделе &quot;Упражнения&quot; есть такое задание: &quot;Создайте класс с именем Account, которым мог бы воспользоваться банк для...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru