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

Ошибка инициализации объекта, конструктором класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры (напечатать самое распространенное женское имя) http://www.cyberforum.ru/cpp-beginners/thread724434.html
Приветствую! Всем хорошего настроения! Только вот у меня его совсем нет..... Сессия на носу, необходимо последнюю лабораторку допинать, а не получается:( Если кто нибудь поможет, буду очень благодарен. Задание выглядит так: На основе таблицы, содержащей следующую информацию о каждом из 20 студентов некоторого ВУЗА:фамилия,имя,отчество,пол,возраст,курс причем в фамилии, имени и отчестве-не...
C++ Прерывания Друзья, вот архив с DOC-ким файлом, помогите реализовать программу,задание под пунктом ПРИМЕР ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ http://www.cyberforum.ru/cpp-beginners/thread724426.html
C++ Удаление рядков и столбцов в матрице
Есть матрица, нужно удалить те рядки и столбцы в которих есть нулевой елемент. Например из матрицы 3 2 -3 0 4 4 0 2 -1 1 2 3 -1 -3 2 получаем 3 -3 4
C++ Русская локаль
Задача: сделать так, чтобы "cout" был без кракозяблов, в программах где небыло классов, в тело функции вставлял setlocale(LC_ALL,"Russian");, а сдесь не могу понять, куда... //В программе объявлен исходный класс //четырехугольников и классы-наследники //параллелограммов, ромбов и квадратов. //Объявление базового класса четырехугольников #include "stdafx.h" #include <iostream> #include...
C++ Код клавиши http://www.cyberforum.ru/cpp-beginners/thread724406.html
Здравствуйте! Есть такой вопрос - какой ASCII код у клавиши вызова контекстного меню? Сейчас пишу небольшой файловый менеджер, и хотелось бы реализовать вызов контекстного меню по нажатию именно этой клавиши, как, например, а FAR Manager.
C++ Небольшой шаблонный класс matrix: комментарии/критика относительно кода с точки зрения правильности написания В плане своего общего развития написал не большой шаблонный класс matrix. Хочу поделиться своей работой с остальными, - может кому то это будет нужно или интересно. Плюс, хотел бы услышать комментарии/критику относительно кода с точки зрения правильности написания и эффективности, кто что думает. Вот собственно код:#pragma once //Шаблонный класс matrix. Позволяет создавать двумерные массивы... подробнее

Показать сообщение отдельно
Stallone
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 46

Ошибка инициализации объекта, конструктором класса - C++

09.12.2012, 10:58. Просмотров 380. Ответов 3
Метки (Все метки)

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


Есть проблема.
Кликните здесь для просмотра всего текста

Начальный баланс приравнивается 100(с помощью инициализации конструктором).
Вводиться сумма которая добавляется к балансу( 100 + 100)
Выводиться баланс( 200 ).
Вводиться сумма которая отнимается от текущего баланса, и тут начинается самое интересное:
Если ввести сумму которая будет больше аргумента объекта класса "acount", но будет меньше либо ровна элемента данных "balance".То программа снимет указанную суму со счета, но при этом еще и выдаст ошибку что сумма превосходит размер суммы на счету.

Но ведь после того как я добавляю к общему балансу еще 100 то баланс становиться равным 200, почему же элемент функция "debit" класса "Account" все равно видит 100?


Заголовочный файл: Account.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
class Account
{
public:
       Account( int amount );
       void setBalance( int amount );
       int getBalance();
       void credit( int amount );
       void debit( int amount );
private:
        int balance;
};

Файл исходного кода: Account.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
35
36
37
38
39
40
41
42
#include <iostream>
using namespace std;
 
#include "Account.h"
 
Account::Account( int amount )
{
   if( amount >= 0 )
   {      
      setBalance( amount );
      cout << "Starting balance: " << getBalance() << endl;
      }
   if( amount < 0 )
   {
      setBalance( 0 );
      cout << "Eror, starting balance invalid.\nStarting balance: "
      << getBalance() << endl;
      }
   }
void Account::setBalance( int amount )
{
   balance = amount;
   }
int Account::getBalance()
{
   return balance;
   }
void Account::credit( int amount )
{
   balance = balance + amount;
   }
void Account::debit( int amount )
{
   if( amount <= balance )
   {
      balance = balance - amount;
      }
   if( amount > balance )
   {
      cout << "Eror, amount invalid." <<endl;
      }
   }

Код клиента: main.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
#include <iostream>
using namespace std;
 
#include "Account.h"
 
int main()
{
    Account account( 100 );
    int amount;
    
    cout << "Please enter amount(credit): ";
    cin >> amount;
    account.credit( amount );
    cout << "Balance: " << account.getBalance() << endl;
    
    cout << "Please enter amount(debit): ";
    cin >> amount;
    account.debit( amount );
    cout << "Balance: " << account.getBalance() << endl;
    
    system("PAUSE");
    return 0;
};

Весь код одним файлом(если кому так удобнее).
Кликните здесь для просмотра всего текста
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
#include <iostream>
using namespace std;
 
class Account
{
public:
       Account( int amount )
       {
          if( amount >= 0 )
          {      
             setBalance( amount );
             cout << "Starting balance: " << getBalance() << endl;
             }
          if( amount < 0 )
          {
             setBalance( 0 );
             cout << "Eror, starting balance invalid.\nStarting balance: "
             << getBalance() << endl;
             }
          }
       void setBalance( int amount )
       {
          balance = amount;
          }
       int getBalance()
       {
          return balance;
          }
       void credit( int amount )
       {
          balance = balance + amount;
          }
       void debit( int amount )
       {
          if( amount <= balance )
          {
             balance = balance - amount;
             }
          if( amount > balance )
          {
             cout << "Eror, amount invalid." <<endl;
             }
          }
private:
        int balance;
};
 
int main()
{
    Account account( 100 );
    int amount;
    
    cout << "Please enter amount: ";
    cin >> amount;
    account.credit( amount );
    cout << "Balance: " << account.getBalance() << endl;
    
    cout << "Please enter amount: ";
    cin >> amount;
    account.debit( amount );
    cout << "Balance: " << account.getBalance() << endl;
    
    system("PAUSE");
    return 0;
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru