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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу с родовым классом у которого есть поле двумерного массива... http://www.cyberforum.ru/cpp-beginners/thread267845.html
Написать программу с родовым классом у которого есть поле двумерного массива, описать метод с помощью которого меняются местами два столбца массива. Добавлено через 2 часа 24 минуты Никто помочь не может? (
C++ свич подскажите пожалуйсто, как сделать чтобы после выполнения задачи 1 он сново просил нажать на цифру, пока не пройдут все? switch(A) { case 1: zad1(); break; case 2: zad2(); break; case 3: zad3(); break; case 4: zad4(); break; default:cout<<" Вы ввели не правильный номер "; } http://www.cyberforum.ru/cpp-beginners/thread267842.html
C++ Алгоритм Дейкстры(нерабочий)
Написал программу по нахождению кратчайшего пути алгоритмом Дейкстры. С простыми примерами программа справляется, но, к примеру, если где-то начиная со второй вершины происходит разветвление, то программа уходит в бесконечный цикл. Суть проблемы вижу - не все элементы матрицы зануляются. Но как сделать программу работоспособной, не знаю) помогите советом... #include<stdio.h> #include<conio.h>...
C++ Элементы очереди
Всем привет... Помогите доработать процедуру.... Вот в этой процедуре не могу разобраться с указателями чтобы добавить элементы в конец очереди void add(int add_num) { int i; node *v,*p; if(i % 2 !=0) { v=new node; v->info=i; v->next=p->NULL;
C++ Диалог http://www.cyberforum.ru/cpp-beginners/thread267823.html
Реализовать в программе диалог с помощью меню, для выполнения указанных в задании действий, и контроль ошибок. при вводе.
C++ Про две группы Анкета для опроса населения содержит две группы вопросов. Первая группа содержит сведения о респонденте: • возраст; • пол; • образование (начальное, среднее, высшее). Вторая группа содержит собственно вопрос анкеты, ответ на который либо ДА, либо НЕТ. Составить программу, используя последовательные классы стандартной библиотеки шаблонов С++, которая: • обеспечивает начальный ввод... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
31.03.2011, 21:31     Класс-шаблон
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;
}
 
Текущее время: 20:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru