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

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

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

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

12.07.2015, 14:30. Просмотров 503. Ответов 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ом тоже нужно в скобках задавать значение?

Кроме того, хотел бы узнать, правильно ли я пишу или нет, и что нужно отредактировать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2015, 14:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не получается создать класс Account из книги Дейтелов (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dima55501
30 / 34 / 6
Регистрация: 14.07.2013
Сообщений: 146
12.07.2015, 15:00 #2
serezhka1111, да, числа указываются так же в скобках. Из кода, немного необычно у Вас выглядит конструктор. Я, конечно, давно уже не читал книжки по С и, возможно, что то подзабыл, но я не помню таких ситуаций, когда параметр конструктора передается методу класса. Попробуйте непосредственно в конструкторе произвести всю инициализацию, которая вам нужна.
serezhka1111
0 / 0 / 0
Регистрация: 15.06.2015
Сообщений: 11
12.07.2015, 17:04  [ТС] #3
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;
}
Вот, исправил.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2015, 17:04
Привет! Вот еще темы с ответами:

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

Где взять решения задач из книги Дейтелов - C++
Здраствуйте. Откуда я могу найти решения задач по Дейтел?

Реализовать класс Account - C++
Реализовать класс Account, представляющий собой банковский счет. В классе должны быть четыре поля: фамилия владельца, номер счета, процент...

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


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

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

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