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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
#1

Класс сумматор.. - C++

13.05.2012, 21:26. Просмотров 578. Ответов 5
Метки нет (Все метки)

Задание:
Создать класс Accumulator (сумматор). Объект данного класса накапливает сумму поступивших на его вход чисел, а также их количество. Вызов функции
Accumulator::Put(int a);
сообщает о поступлении в аккумулятор очередного числа a. Получить количество введенных чисел и их сумму можно с помощью вызова функций
int Accumulator::GetN();
и
int Accumulator::GetSum();
соответственно.
Создать несколько объектов этого класса и протестировать их.

help

Добавлено через 2 часа 3 минуты
хееелп
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2012, 21:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс сумматор.. (C++):

Сумматор - C++
Можете привести код оптимизированного сумматора?

Сумматор от 0 до 100000000 - C++
Дамы и господа, требуется ваша помощь в создании программы в Code::Blocks IDM с использованием long float и double циклом for и выводом...

Сумматор - виртуальная машина - C++
По заданию мне нужно реализовать арифметические операции над сумматором(4 байта): арифметика дробная, арифметика целая знаковая. Целые -...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { friend class diagonal; ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами - C++
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Отдельно класс данных, класс формул и главный класс - C++
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.05.2012, 21:48 #2
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
#include <cstddef>
#include <iostream>
 
template< class T >
class accumulator {
public:
   accumulator(T const& beg = T()) : m_sum(beg), m_count() {}
   accumulator& operator << (T const& obj)
   {
      m_sum += obj;
      ++m_count;
      return *this;
   }
   
   std::size_t operator *() const 
   { 
      return m_count; 
   }
   
   T operator ~ () const
   {
      return m_sum;
   }
private:
   T           m_sum;
   std::size_t m_count;
};
 
int main()
{
   accumulator<int> t;
   t << 10 << 20 << 30 << 40 << 50;
   std::cout << ~t << '\n' << *t;
}

Не по теме:

1
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
13.05.2012, 22:07 #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
#include <iostream>
 
class accumulator
{
    public:
        accumulator()
            : n_(0), sum_(0)
        {
 
        }
 
        void put(int value)
        {
            sum_+= value;
            ++n_;
        }
 
        int get_n() const
        {
            return n_;
        }
 
        int get_sum() const
        {
            return sum_;
        }
 
    private:
        int n_;
        int sum_;
};
 
int main()
{
    accumulator accumulator_sample;
 
    for(int i = 1; i <= 5; ++i)
        accumulator_sample.put(i);
 
    std::cout << "count: " << accumulator_sample.get_n() << "\n"
                 "sum: " << accumulator_sample.get_sum() << "\n";
}
Добавлено через 14 минут
ну и ещё вариант, с проверкой на переполнение
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
#include <iostream>
#include <stdexcept>
#include <limits>
 
class accumulator
{
    public:
        accumulator()
            : n_(0), sum_(0)
        {
 
        }
 
        void put(int value)
        {
            sum_ = safe_sum(sum_, value);
            ++n_;
        }
 
        int get_n() const
        {
            return n_;
        }
 
        int get_sum() const
        {
            return sum_;
        }
 
    private:
        int n_;
        int sum_;
 
    private:
        int safe_sum(int lhs, int rhs)
        {
            static const int max_value = std::numeric_limits<int>::max();
            static const int min_value = std::numeric_limits<int>::min();
 
            if(rhs < 0 && lhs < 0)
            {
                if(min_value - rhs > lhs)
                    throw std::overflow_error("overflow_error");
            }
 
            else if(rhs > 0 && lhs > 0)
            {
                if(max_value - lhs < rhs)
                    throw std::overflow_error("overflow_error");
            }
 
            return lhs + rhs;
        }
};
 
int main()
{
    try
    {
        accumulator accumulator_sample;
 
        for(int i = 1; i <= 5; ++i)
            accumulator_sample.put(i);
 
        std::cout << "count: " << accumulator_sample.get_n() << "\n"
                     "sum: " << accumulator_sample.get_sum() << "\n";
    }
 
    catch(std::exception& e)
    {
        std::cerr << e.what() << '\n';
    }
}
1
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
13.05.2012, 22:40  [ТС] #4
Цитата Сообщение от rangerx Посмотреть сообщение
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>
 
class accumulator
{
    public:
        accumulator()
            : n_(0), sum_(0)
        {
 
        }
 
        void put(int value)
        {
            sum_+= value;
            ++n_;
        }
 
        int get_n() const
        {
            return n_;
        }
 
        int get_sum() const
        {
            return sum_;
        }
 
    private:
        int n_;
        int sum_;
};
 
int main()
{
    accumulator accumulator_sample;
 
    for(int i = 1; i <= 5; ++i)
        accumulator_sample.put(i);
 
    std::cout << "count: " << accumulator_sample.get_n() << "\n"
                 "sum: " << accumulator_sample.get_sum() << "\n";
}
как явно задать числа?
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
13.05.2012, 23:17 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    accumulator accumulator_sample;
 
    int value;
    const int n = 5;
 
    for(int i = 1; i <= n; ++i)
    {
        std::cout << i << "\\" << n << ": ";
        std::cin >> value;
        accumulator_sample.put(value);
    }
 
    std::cout << "count: " << accumulator_sample.get_n() << "\n"
                 "sum: " << accumulator_sample.get_sum() << "\n";
}
1
m1x
5 / 5 / 0
Регистрация: 20.11.2010
Сообщений: 173
13.05.2012, 23:26  [ТС] #6
rangerx, большое спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 23:26
Привет! Вот еще темы с ответами:

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

Класс, производный класс, паблик-класс - C++
Задание: Создать класс колесо, которое имеет радиус. Определить конструкторы и метод доступа. Создать класс машин, содержащий класс колесо....

Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка - C++
Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки...

Абстрактный класс CGraphicsObject, его наследник - базовый класс CPoint, и класс - наследник от CPoint - C++
Всем доброй ночи! Очень нужна помощь и по мере возможности разъяснения на темы: абстрактный класс в задании(что он из себя представляет и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.05.2012, 23:26
Ответ Создать тему
Опции темы

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