Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Igorby
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 135
1

Реализовать класс "Счётчик" (Найти и исправить ошибки в коде)

16.05.2018, 07:17. Просмотров 348. Ответов 7
Метки нет (Все метки)

Вот условие:

"Цифровой счетчик, это переменная с ограниченным
диапазоном. Значение которой сбрасывается, когда
ее целочисленное значение достигает определен-
ного максимума (например, k принимает значения
в диапазоне от 0..100). В качестве примера такого
счетчика можно привести цифровые часы, счетчик
километража. Опишите класс такого счетчика. Обе-
спечьте возможность установления максимального
и минимального значений, увеличения счетчика на
1, возвращения текущего значения."

Вот решение:
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
#include <iostream>
using namespace std;
 
class Counter {
    int k, min, max;
    public:
        Counter(int _min, int _max) {
            min = _min;
            max = _max;
            k = _min;
        }
        void Iteration() {
            return k++;
        }
        void ShowMin() {
            cout << k;
        }
        void CounterExit() {
            if (k == max) {
                k = min;
            }
        }
};
 
int main() {
    Counter CounterObject(0, 100);
    CounterObject.Iteration();
    CounterObject.ShowMin();
}
Но компилятор ругается на строку в которой работает метод увеличения счетчика на единицу.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2018, 07:17
Ответы с готовыми решениями:

Реализовать класс Bank (найти и исправить ошибки и недочёты в коде)
Что тут не так? Подскажите пж! 2 дня сижу и не понимаю как сделать этот чёртов банк! #include...

Проблемы с реализацией игры "Морской бой": найти и исправить ошибки в коде
Доброго времени суток. У меня вопрос по игре &quot;Морской бой&quot;. Я вывел поле с написанными координатами...

Реализовать базовый класс «Буква» в соответствии с условием (найти и исправить ошибки в коде)
Создать базовый класс «буква», такой, что: a) он содержит перечислительная тип, что обозначает 4...

Написать функцию поиска человека по заданному полю структуры "Знак Зодиака" (найти и исправить ошибки в коде)
Здравствуйте! Не могу правильно вывести в программе дату рождения. Надо сделать чтобы выводил в...

Реализовать пользовательский класс Matrix (найти причины возникновения ошибок в коде и исправить эти ошибки)
Доброго времени суток,задание написать класс Matrix,все вроде бы понятно,но почему-то моя матрица...

7
Dastan4ik
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
Завершенные тесты: 2
16.05.2018, 07:31 2
C++
1
2
3
void Iteration() {//Ну так функция, то рассчитывает что ничего не должно возвращаться может int?
            return k++;//Тут может быть проблема что переменная k увеличится на 1 в следующем вызове функции или выводе k, если такая возможность есть лучше сделать ++k;
        }
0
Igorby
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 135
16.05.2018, 08:02  [ТС] 3
Цитата Сообщение от Dastan4ik Посмотреть сообщение
Ну так функция, то рассчитывает что ничего не должно возвращаться может int?
Все верно. Спасибо.
Цитата Сообщение от Dastan4ik Посмотреть сообщение
Тут может быть проблема что переменная k увеличится на 1 в следующем вызове функции или выводе k, если такая возможность есть лучше сделать ++k
В данном случае это роли не играет. Но задача в следующем. Если создать 101 объект, k будет ровняться 101, а не единице.
То есть, метод CounterExit, как-то не правильно работает.
0
Dastan4ik
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
Завершенные тесты: 2
16.05.2018, 15:13 4
Так ты CounterExit не вызываешь. Думаю тебе надо было ограничение поставить в Iterator и чтоб он возвращал bool, типа k увеличилась на 1 или нет.
C++
1
2
3
4
5
6
7
8
bool Iterator(){
  k++;
  if(k==max){
     k=min;
     return false;
  }
  return true;
}
0
Igorby
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 135
16.05.2018, 19:45  [ТС] 5
Цитата Сообщение от Dastan4ik Посмотреть сообщение
Так ты CounterExit не вызываешь.
Так тоже не работает:
C++ (Qt)
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
#include <iostream>
using namespace std;
 
class Counter {
    int k, min, max;
    public:
        Counter(int _min, int _max) {
            min = _min;
            max = _max;
            k = _min;
        }
        int Iteration() {
            return k++;
        }
        bool Iterator(){
          k++;
          if(k==max){
             k=min;
             return false;
          }
          return true;
        }       
        void ShowMin() {
            cout << k << endl;
        }
        void CounterExit() {
            if (k == max) {
                k = min;
            }
        }
};
 
int main() {
    Counter CounterObject(0, 100);
    for (int i = 0; i < 100; i++) {
        CounterObject.Iteration();
    }
    CounterObject.ShowMin();
    CounterObject.Iteration();
    CounterObject.ShowMin();
}
0
Dastan4ik
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
Завершенные тесты: 2
17.05.2018, 14:51 6
Но ты же вызываешь Iteration() - ?
А не функцию которую я написал.
0
woldemas
446 / 318 / 174
Регистрация: 06.09.2013
Сообщений: 966
17.05.2018, 15:54 7
Igorby,
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
#include <iostream>
 
template <typename T>
class Counter {
    T min, max, value;
public:
    Counter(T _min, T _max): min(_min), max(_max), value(_min) {}
    Counter & operator++() {
        if(++value > max) value = min;
        return *this;
    }
    T operator*() const { return value; }
    void reset() { value = min; }    
};
 
int main()
{
    Counter<int> counter(0, 100);
    for (int i = 0; i < 100; i++) {
        ++counter;
    }
    std::cout << *counter << std::endl;
    ++counter;
    std::cout << *counter;
    return 0;
}
0
Igorby
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 135
17.05.2018, 19:39  [ТС] 8
Цитата Сообщение от woldemas Посмотреть сообщение
Counter(T _min, T _max): min(_min), max(_max), value(_min) {}
Объявление конструктора, как раз для новичка
Цитата Сообщение от woldemas Посмотреть сообщение
Counter & operator++()
Тоже непонятно. Предполагаю, что связано с перегрузкой операторов.
0
17.05.2018, 19:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2018, 19:39

Реализовать класс "Длинных чисел" (найти причины и способы устранения ошибки)
Всем привет:) помогите пожалуйста решить проблему: делаю класс длинных чисел, обязательно нужно...

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число"
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию...

Класс "shop", исправить ошибки
// №5 #include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; class shop { double...


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

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

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