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

Не работает программа из книги - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно исправить код http://www.cyberforum.ru/cpp-beginners/thread681397.html
Нужно исправить код. Ошибку выдаёт. #include<iostream> #include<cmath> using namespace std; int main() { double x,y,b; cin>>x>>y; cout<<"Znachenie x="<<x<<endl; cout<<"Znachenie y="<<y<<endl;
C++ Гистограмма Помогите, есть задача: с клавиатуры вводится число n < 20, заполнить массив длинной n рандомными числами от 0 до 20 и вывести на экран гистограмму, кол-во символов # в которой будет равно числу элемента в ячейке массива. Пример: при 3 # # # ### 3 1 2 http://www.cyberforum.ru/cpp-beginners/thread681394.html
Возвращаемое значение C++
Как сделать так, что бы в зависимости от подаваемых аргументов, функция возвращала разные значения? Пробовал через шаблоны, но не получилось.
C++ разложение в ряд функции
Прошу помощи, не могу разобраться где у меня ошибка. http://www.picshare.ru/uploads/121026/gs931LH4x8.jpg Нужно выполнить разложение в ряд функции. и что бы значения совпадали в случае функии (справа) и разложения (слева) double y(double x,double eps, int &k) { return log(2*cos(x/2)); }
C++ Разложить в ряд Тейлора http://www.cyberforum.ru/cpp-beginners/thread681323.html
Помогите,срочно пожалуйста!:cry: ex=1+x+x2/2!+x3/3!+...
C++ Объясните в чем разница Здравствуйте! У меня такой вопрос в чем разница записи switch(n) { case 1: cout << end; case 2: cout << endl; } подробнее

Показать сообщение отдельно
fjay69
 Аватар для fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
26.10.2012, 21:50     Не работает программа из книги
Изучаю C++ по пособию Дэвиса "для чайников". Набираю исходный код программы Бюджет3 точно, как в книге, но компилятор его не принимает. Что не так?
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
//budget3.cpp
#include<iostream.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
 
class LinkedListObject
{
 public:
  LinkedListObject()
  { addToEnd(); }
  static LinkedListObject* first()
  { return pFirst; }
  LinkedListObject* next()
  { return pNext; }
  void addToEnd();
 protected:
  static LinkedListObject* pFirst;
  LinkedListObject* pNext;
};
 
LinkedListObject* LinkedListObject::pFirst=0;
 
void LinkedListObject::addToEnd()
{
 if (pFirst==0)
 {
  pFirst=this;
 }
 else
 {
  LinkedListObject* pA;
  for (pA=pFirst; pA->pNext; pA=pA->pNext) {}
  pA->pNext=this;
 }
 pNext=0;
}
 
class Account: public LinkedListObject
{
 public:
  Account::Account(unsigned accNo, double initialBalance=0.0)
  {
   accountNumber=accNo;
   balance=initialBalance;
   count++;
  }
  int accountNo()
  { return accountNumber; }
  double acntBalance()
  { return balance; }
  static int noAccounts()
  { return count; }
  static Account* first()
  { return (Account*)LinkedListObject::first(); }
  Account* next()
  { return (Account*)LinkedListObject::next(); )
  void deposit(double amount)
  { balance+=amount; }
  virtual void withdrawal (double amount)=0;
  void display()
  {
   cout<<type()<<" счет номера "<<accountNumber<<" = "<<balance<<"\n";
  }
  virtual char* type()=0;  
 protected:
  static int count;
  unsigned accountNumber;
  double balance;
};
 
int Account::count=0;
 
class Checking: public Account
{
 public:
  Checking::Checking(unsigned sccNo, double initialBalance=0.0):
  Account(accNo, initalBalance) {}
  virtual void withdrawal(double amount);
  char* type()
  { return "Чековый"; }
};
 
void Checking::withdrawal(double amount)
{
 if (balance<amount)
 {
  cout<<"Недостаточно денег на счете: баланс равен "<<balance
  <<" ,попытка снять "<<amount<<"\n";
 }
 else
 {
  balance-=amount;
  if (balance<500.00)
  { balance -= 0.20; }
 }
}
 
class Savings: public Account
{
 public:
  Savings::Savings(unsigned accNo, double initialBalance=0.0):
  Account(accNo, initalBalance)
  { noWithdrawals=0; }
  virtual void withdrawal(double amount);
  char* type()
  { return "Сберегательный"; }
 protected:
  int noWithdrawals;
};
 
void Savings::withdrawal(double amount)
{
 if (balance<amount)
 {
  cout<<"Недостаточно денег на счете: баланс равен "<<balance
  <<" ,попытка снять "<<amount<<"\n";
 }
 else
 {
  if (++noWithdrawals>1)
  { balance -= 5.00; }
  balance-=amount;
 }
}
//прототипы
unsigned getAccntNo();
void process(Account* pAccount);
void getAccounts();
void displayReslts();
 
//main - сбор и вывод данных
int main(int nArg, char* pszArgs[])
{setlocale(LC_CTYPE, "rus");
 getAccounts();
 displayResults();
 return 0;
}
 
void getAccounts()
{
 Account* pA;
 char accountType;
 while(1)
 {
  cout<<"Нажмите S для сберегательных счетов, С для чековых, Х для выхода: ";
  cin>>accountType;
  switch (accountType)
  {
   case 'c':
   case 'C':
    pA=new Checking(getAccntNo());
    break;
   case 's':
   case 'S':
    pA=new Savings(getAccntNo());
    break;
   case 'x':
   case 'X':
    return;
   default:
    cout<<"Неверный ввод.\n";
  }
  process(pA);
 }
}
 
void displayResult()
{
 double total=0.0;
 cout<<"Суммы по всем счетам:\n";
 for (Account* pA=Account::first();pA;pA=pA->next())
 {
  pA->display();
  total+=pA->acntBalance();
 }
 cout<<"Всего = "<<total<<"\n";
}
 
unsigned getAccntNo()
{
 unsigned accntNo;
 cout<<"Введите номер счета: ";
 cin>>accntNo;
 return accntNo;
}
 
void process(Account* pAccount)
{
 cout<<"Введите положительную сумму для вклада, отрицательную для снятия, "
 <<"0 для завершения работы\n";
 double transaction;
 do
 {
  cout << ":";
  cin>>transaction;
  if (transaction>0)
  { pAccount->deposit(transaction); }
  if (transaction<0)
  { pAccount->withdrawal(-transaction); }
 } while (transaction!=0);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru