Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 29
1

Bankomat: найти ошибки в коде и прокомментировать его строки

10.04.2014, 05:34. Показов 805. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пормогите найти ошибку в коде и напишите коменты что где и что делает
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
#include <iostream>
#include <map>
#include <stdexcept>
#include <cassert>
 
class ATMFactory;
 
class ATM
{
public:
   friend class ATMFactory;
   std::map<int, int> get_money(int64_t amount)
   {
      if (amount >= min_amount && amount <= max_amount)
      {
         return calculate(amount);
      }
      throw std::out_of_range("invalid_amount. Less than " + std::to_string(min_amount) + 
            " or more than " + std::to_string(max_amount));
   }
   int get_id() const
   {
      return id_;
   }
   enum monetary_unit { TEN = 10, FIFTY = 50, HUNDRED = 100, FIVE_HUNDRED = 500, THOUSAND = 1000 };
private:
   ATM(int id, int64_t min, int64_t max) :
      id_(id), min_amount(min), max_amount(max)
   {
   }
 
   void load_money(int ten, int fifty, int hundred, int five_hundred, int thousand)
   {
      money[TEN] = ten;
      money[FIFTY] = fifty;
      money[HUNDRED] = hundred;
      money[FIVE_HUNDRED] = five_hundred;
      money[THOUSAND] = thousand;
   }
 
   int64_t calculate_current(int64_t amount, std::map<int, int>& result, monetary_unit unit)
   {
      while (amount >= unit)
      {
         int cnt = amount / unit;
         if (money[unit] < cnt)
         {
            break;
         }
         result[unit] = cnt;
         money[unit] -= cnt;
         amount %= unit;
      }
      return amount;
   }
 
   std::map<int, int> calculate(int64_t amount)
   {
      if (amount % TEN)
      {
         throw std::invalid_argument("invalid_amount. Can't div to " + std::to_string(TEN));
      }
      std::map<int, int> result;
      amount = calculate_current(amount, result, THOUSAND);
      amount = calculate_current(amount, result, FIVE_HUNDRED);
      amount = calculate_current(amount, result, HUNDRED);
      amount = calculate_current(amount, result, FIFTY);
      amount = calculate_current(amount, result, TEN);
      return result;
   }
 
   const int id_;
   std::map<int, int> money;
   const int64_t min_amount;
   const int64_t max_amount;
};
 
class ATMFactory
{
public:
   static ATM create(int64_t min, int64_t max, int ten, int fifty, int hundred, int five_hundred, int thousand)
   {
      static int id = 0;
      ATM result(id++, min, max);
      result.load_money(ten, fifty, hundred, five_hundred, thousand);
      return result;
   }
};
 
int main()
{
   ATM test_atm = ATMFactory::create(0, 5000, 1, 1, 1, 1, 1);
   assert(test_atm.get_id() == 0);
   std::map<int, int> money = test_atm.get_money(1660);
   assert(money[ATM::TEN] == 1 && money[ATM::FIFTY] == 1 && money[ATM::HUNDRED] == 1 &&
          money[ATM::FIVE_HUNDRED] == 1 && money[ATM::THOUSAND] == 1);
   money = test_atm.get_money(10);
   assert(money.empty());
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2014, 05:34
Ответы с готовыми решениями:

Проектирование класса Matrix и его использование - найти ошибки в коде
Задание было следующим. Проектирование класса Matrix (матрица). Как минимум, объекты этого класса...

Программа с запуском из командной строки, найти ошибки в коде
Я написал код программы с процедурой, которая возвращает последнее вхождение введенного символа в...

Пользовательский класс String: реализовать копирование строки и вывод её на консоль (найти ошибки в коде)
Привет. Мне нужен ответ: я дурак, или это c++ подвел (естественно первое:)). Я решил...

Найти ошибку в коде и прокомментировать код
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include...

15
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 05:51 2
Среда какая?
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 29
10.04.2014, 05:54  [ТС] 3
codeblocks
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 05:57 4
Цитата Сообщение от DrYea Посмотреть сообщение
codeblocks
Номер компилятора, и какие ошибки пишет?
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 29
10.04.2014, 06:04  [ТС] 5
In member function 'std::map<int, int> ATM::get_money(int64_t)':|
main.cpp|18|error: 'to_string' is not a member of 'std'|
main.cpp||In member function 'std::map<int, int> ATM::calculate(int64_t)':|
main.cpp||In member function 'std::map<int, int> ATM::get_money(int64_t)':|

Я так понимаю проблема с реализацией метода toString

Добавлено через 1 минуту
mingw32-g++ Компилятор
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 06:10 6
Цитата Сообщение от DrYea Посмотреть сообщение
mingw32-g++ Компилятор
Это не номер компилятора. 4.7.2, 4.8.0 - вот это номера. В папке bin, компилятора, посмотрите файлы .exe.
В свойствах компилятора стоит галка, чтобы использовать С++11?
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 29
10.04.2014, 06:15  [ТС] 7
4.5.2
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 06:18 8
Цитата Сообщение от DrYea Посмотреть сообщение
4.5.2
Там нет to_string(). Скачайте и подключите 4.8.0.
И не забудьте это сделать:
Цитата Сообщение от alsav22 Посмотреть сообщение
В свойствах компилятора стоит галка, чтобы использовать С++11?
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 29
10.04.2014, 06:24  [ТС] 9
Помогите реализовать данный метод, чтобы не от компилятора использовался, а написанным кодом, т.к. в суть задания входит реализация метода tostring() которая должна преобраховывать в строку оставшуются сумму в банкомате
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 06:29 10
Не находит std::to_string
0
Заблокирован
10.04.2014, 06:34 11
А используется cassert... таки крестовый хэндлер не юзабелен? Вопрос "экспертам" c++
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 29
10.04.2014, 06:55  [ТС] 12
Помогите написать этотметод toSting Я в не понимаю как он должен выглядеть в данном случае
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 07:01 13
Цитата Сообщение от DrYea Посмотреть сообщение
Я в не понимаю как он должен выглядеть в данном случае
А что в данном случае особенного? Добавляете в код свою реализацию to_string(), меняете в коде std::to_string() на to_string().
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 29
10.04.2014, 07:02  [ТС] 14
Я понял это, но свою реализацию же надо написать
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 07:07 15
Я же выложил ссылку с двумя реализациями.
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 29
10.04.2014, 08:53  [ТС] 16
Реализовать класс Bankomat моделирующий работу банкомата. В классе должны содержатся поля для хранения идентификационного номера банкомата, информации о текущей сумме денег оставшейся в банкомате минимальной и максимальной сумме которой позволяется снять клиенту в один день.Сумма денег представляется номиналами 10 -1000 руб.реализовать метод инициализации банкомата метод загрузки купюр в банкомат и метод снятия определенной суммы денег. Метод снятия денег должен выполнять проверку на корректность снимаемой суммы : она не должна быть меньше минимального значения и не должна превышать максимальное значение. Метод toString() должен преобразовать в строку сумму денег, оставшуюся в банкомате.

Вместо инициализации используем конструкторы трех видов - по умолчанию, с полями инициализирующими поля класса и копирующий. Ввод/вывод с помощью перегрузки операторов << и >>.

Помогите с реализацией данных условий
0
10.04.2014, 08:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2014, 08:53
Помогаю со студенческими работами здесь

Нужно найти ошибку в коде, который выбирает из строки самое длинное слово и выводит его
Мой код: def maxWord(S): a1 = &quot;&quot; s2 = &quot;&quot; size1 = 0 size2 = 0 for i in range (0,len(S)):...

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private:...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru