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

Что-то с конструктором - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Есть ли конструкции на подобии массивов,но размер которых можно менять сколь угодно раз во время работы программы? http://www.cyberforum.ru/cpp-beginners/thread1091316.html
Есть ли конструкции на подобии массивов,но размер которых можно менять сколь угодно раз во время работы программы? В связанных списках толком ничего не понял...
C++ Создать 2 указателя на вектор хотел создать 2 указателя на вектор, а не получается... пишу: shared_ptr<vector<int>> ptr1 (new vector<int>(10))подчеркивает vector<int> в самом начале со словами : "vector не является шаблоном". Как правильно его создать? http://www.cyberforum.ru/cpp-beginners/thread1091288.html
Вычислить сумму возможных значений ряда C++
Объяните, как решать такие задания в Visual C++ 6.0 Вычислить сумму возможных значений ряда , где F(i) - функция из приведенной ниже таблицы, а n - номер варианта. Шаг считать равным единице. Обязательным требованием является реализация циклического алгоритма в трех версиях (с помощью циклов for, while, do-while), а также использование конструкции условного ветвления switch для выбора...
C++ Задача с шаблонами и наследованием
Ребята, есть такая проблема.. Предположим, что у нас есть класс Image (не шаблонный). И есть класс ImageExt<T1,T2> (шаблонный), унаследованный от Image. Я хочу использовать в своей функции множество различных ImageExt<T1,T2> естественно с разными типами. Чтобы это можно было реализовать, хочу хранить объекты в массиве типа Image. Всё бы хорошо, но в ImageExt есть шаблонные методы, которые мне...
C++ Если сумма индексов каких-либо двух элементов матрицы, расположенных ниже главной диагонали, равна минимальному элементу матрицы, то.. http://www.cyberforum.ru/cpp-beginners/thread1091254.html
Дана квадратная матрица А порядка N, состоящая из натуральных чисел. Если сумма индексов каких-либо двух элементов матрицы, расположенных ниже главной диагонали, равна минимальному элементу для всей матрицы, то вывести на экран сообщение "Да", иначе - сообщение "Нет" Помогите решить пожалуйста.
C++ Нужны задачи с использованием функций Хочу полностью повторить и закрепить тему функций. Накиньте идей для реализации функций. Лучше математических :) подробнее

Показать сообщение отдельно
lotos580
1 / 1 / 1
Регистрация: 25.05.2012
Сообщений: 60

Что-то с конструктором - C++

07.02.2014, 12:35. Просмотров 428. Ответов 10
Метки (Все метки)

Задача: написать программу бюджета, есть два типа счета, у каждого свои параметры пополнения и снятия. Место вывода баланса только что созданного счета: строка el->display(); в конце программы.
Помогите найти ошибку, чтобы правильно выводился баланс счета.

P.S.
Используется связанный список, добавление элементов в конец.
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include <iostream>
using namespace std;
 
class Tail
{
public:
    Tail()
    {
        addTail();
    }
    void addTail();
    Tail* next;
};
 
Tail* first = 0;
 
void Tail::addTail()
{
    if (first == 0)
    {
        first = this;
    }
    else
    {
        Tail* temp;
        for (temp = first; temp->next; temp = temp->next){  }
        temp->next = this;
    }
    next = 0;
}
 
class Account : public Tail
{
public:
    Account::Account(unsigned accNo, double balance = 0.0)
    {
        numberAcc = accNo;
        balance = 0.0;
    }
    void deposit(double transaction)
    {
        balance += transaction;
    }
    virtual void operation(double transaction) = 0;
    virtual void withdraw(double transaction) = 0;
    void display()
    {
        cout << balance << endl;
    }
protected:
    double balance;
    unsigned numberAcc;
};
 
class Checking : public Account
{
public:
    Checking::Checking(unsigned accNo, double balance = 0.0) : Account(accNo, balance = 0.0){
        balance = 0.0;  
    }
    virtual void operation(double transaction);
    virtual void withdraw(double transaction);
};
 
class Saving : public Account
{
    public:
    Saving::Saving(unsigned accNo, double balance = 0.0) : Account(accNo, balance = 0.0){balance = 0.0;}
    virtual void withdraw(double transaction);
    virtual void operation(double transaction);
};
 
unsigned total = 0;
 
void Checking::operation(double transaction)
{
    if (balance < 500)
        balance -= 0.2;
    balance += transaction;
}
 
void Checking::withdraw(double transaction)
{
    if (balance < 500)
        balance -= 0.2;
    balance -= transaction;
}
 
void Saving::operation(double transaction)
{
    balance += transaction;
}
 
void Saving::withdraw(double transaction)
{
    total++;
    if (total >= 1)
        balance -= 5.0;
    balance += transaction;
}
 
void process(Account* el)
{
    double transaction;
    do
    {
        cout << "Please enter transaction: ";
        cin >> transaction;
        if (transaction > 0)
            el->operation(transaction);
        else
            el->withdraw(-transaction);
    }while(transaction != 0);
}
 
int getNumber()
{
    unsigned number;
    cout << "Enter number of account: ";
    cin >> number;
    return number;
}
 
int main()
{
    Account* el;
    while(1)
    {
        char type;
        cout << "S = Saving, C = Checking, X = exit" << endl;
        cin >> type;
        if (type == 'X' || type == 'x')
            break;
        switch(type)
        {
        case 'S':
        case 's':
            el = new Saving(getNumber());
            break;
        case 'C':
        case 'c':
            el = new Checking(getNumber());
            break;
        default:
            cout << "I can't understund your symbol. Try again!" << endl;
        }
        el->next = 0;
        process(el);
        el->display(); // <--- вот тут выводим баланс только что введенного счета, но почему-то всегда выводится число -6.27....
    }
    system("pause");
    return 0;
}
Добавлено через 2 минуты
По-моему, что-то с конструктором..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru