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

Класс-шаблон - C++

Восстановить пароль Регистрация
 
Димиан
1 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 54
31.03.2011, 18:36     Класс-шаблон #1
Создать класс-шаблон, содержащий поля для хранения одномерного массива и количества элементов в массиве. Описать методы для инициализации и вывода элементов массива на экран, а так же для подсчета суммы элементов массива, расположенных после последнего элемента, равного нулю. Продемонстрировать работу методов класса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2011, 18:36     Класс-шаблон
Посмотрите здесь:

класс-шаблон C++
Класс-шаблон list C++
C++ Класс-шаблон
C++ из класса в класс-шаблон
Создать шаблон класс Queue C++
Вернуть класс-шаблон C++
C++ Переделать класс на шаблон класса
Класс-Шаблон C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
31.03.2011, 21:31     Класс-шаблон #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
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
#include <cstdlib>
#include <ctime>
#include <iostream>
 
template <typename Tp_>
class Array {
 public:
  typedef Tp_ ValueType;
  explicit Array(size_t size)
    : capacity_(size), size_(size), data_(new ValueType[size]), recap_(10) {}
  Array() : capacity_(0), size_(0), data_(NULL), recap_(10) {}
  ~Array() {
    delete [] data_;
  }
  void Recap(size_t new_capacity) {
    ValueType* new_data = new ValueType[new_capacity];
    size_t new_size = ((new_capacity < size_) ? new_capacity : size_);
    for (size_t i = 0; i < new_size; ++i)
      new_data[i] = data_[i];
    delete [] data_;
    data_ = new_data;
    size_ = new_size;
    capacity_ = new_capacity;
  }
  size_t Size() const {
    return size_;
  }
  void PushBack(const ValueType& value) {
    if (size_ >= capacity_)
      Recap(capacity_ + recap_);
    data_[size_++] = value;
  }
  ValueType PopBack() {
    if (size_ > 0)
      return data_[--size_];
  }
  ValueType& At(size_t position) {
    return data_[position];
  }
  // вывод массива в поток с возвращением потока
  std::ostream& Print(std::ostream &stream) {
    for (size_t i = 0; i < Size(); ++i)
      stream << data_[i] << " ";
    return stream;
  }
  // сумма элементов после последнего нуля или всех элементов
  ValueType SumAfterLastZeroOrAll() {
    int last_zero_index = size_ - 1;
    while (last_zero_index > 0 && data_[last_zero_index] != 0)
      --last_zero_index;
    ValueType result = 0;
    for (size_t i = last_zero_index; i < size_; ++i)
      result += data_[i];
    return result;
  }
 private:
  Array(const Array&);          // запрет конструктора копирования
  void operator=(const Array&); // запрет оператора присваивания
  size_t capacity_;
  size_t size_;
  ValueType* data_;
  size_t recap_;
};
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  Array<int> array;
 
  for (int i = 0; i < 10; ++i)
    array.PushBack(rand() % 10);
 
  array.Print(std::cout) << std::endl << "Sum after last zero: " 
                         << array.SumAfterLastZeroOrAll() << std::endl;
  return 0;
}
Yandex
Объявления
31.03.2011, 21:31     Класс-шаблон
Ответ Создать тему
Опции темы

Текущее время: 18:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru