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

Использование классов в С++. Простые объекты. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алгоритм Шимбелла http://www.cyberforum.ru/cpp-beginners/thread297487.html
Алгоритм Шимбелла позволяет находить минимальные (максимальные) пути между вершинами, состоящие из заданного количества ребер. Введем специальные операции над элементами матрицы: 1) Операция умножения двух величин а и b при возведении матрицы в степень соответствует их алгебраической сумме: 2) Операция сложения двух величин а и b заменяется выбором из этих величин минимального...
C++ Авторизация на прокси Пишу на С программу, забирающую определенное число с веб-страницы (температуру). Все работает. Добавил работу через прокси. Работает. А вот с работой с прокси через авторизацию - нефига. Помогите разобраться в генерации HTTP запросов. При работе через прокси без авторизации сначала посылаю серверу запрос: "CONNECT myxa.opsb.ru:80 HTTP/1.1\r\n\r\n" и затем забираю страницу запросом "GET... http://www.cyberforum.ru/cpp-beginners/thread297482.html
C++ Вывести в алфавитном порядке последние слова всех предложений
Помогите, пожалуйста, исправить код, а то дуб дубом((Не могу никак дойти( Дан текст, состоящий из N (2<=N<=10) строк с максимальной длиной 80 символов. Необходимо вывести в алфавитном порядке последние слова всех предложений. Считать, что текст написан синтаксически грамотно, в качестве знаков препинания используются точка и запятая, слова состоят только из букв, перенос слов по слогам...
C++ Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть
а)Дана последовательность n элементов в виде массива. Найти минимальный элемент массива,паставить его на первое место,остальные эл.сдвигаются. б)Дана матрица А размерности m*n и вектор Х размерности m. Найти произведение Х*А. Помогите решить!!!у меня не получается!!!
C++ строка с нечетной длиной слов http://www.cyberforum.ru/cpp-beginners/thread297437.html
Дана строка. Сформировать новую строку, скопировав в нее слова исходной строки, которые имеют нечетную длину, разделить слова пробелом. На Си. Очень прошу вашей помощи со строками дуб дубом
C++ Структура последовательности типа в чем смысл этой структуры...Я ничего не могу найти в интернете по этой теме... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
17.05.2011, 19:10     Использование классов в С++. Простые объекты.
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <cstring>
 
template <class ValueType>
class List {
 private:
  struct Element;
 public:
  // итератор поможет получить последовательный доступ к
  // элементам списка без перебора предыдущих элементов списка.
  class Iterator {
   public:
    explicit Iterator(Element *data) : data_(data) {}
    Iterator() : data_(NULL) {}
    ValueType &operator*() { return data_->data; }
    ValueType &operator->() { return data_->data; }
    Iterator &operator++() {
      data_ = data_->next;
      return *this;
    }
    Iterator operator++(int) {
      Iterator result(data_);
      operator++();
      return result;
    }
    bool operator==(const Iterator &other) {
      return data_ == other.data_;
    }
    bool operator!=(const Iterator &other) {
      return data_ != other.data_;
    }
   private:
    Element *data_;
  };
  Iterator Begin() {
    return Iterator(first_);
  }
  Iterator End() {
    return Iterator(NULL);
  }
  // конец итераторов
 
  List() : size_(0), first_(NULL) {}
  ~List() { Clear(); }
  void Clear() {
    while (first_ != NULL) {
      Element *next = first_->next;
      delete first_;
      first_ = next;
    }
    size_ = 0;
  }
  size_t Size() const { return size_; }
  // добавление в конец списка
  void PushBack(const ValueType &value) {
    Element *last = LastElement();
    if (last == NULL)
      first_ = new Element(value);
    else
      last->next = new Element(last, NULL, value);
    ++size_;
  }
  ValueType &At(size_t position) {
    return ElementAt(position)->data;
  }
 private:
  struct Element {
    ValueType data;
    Element *next;
    Element *prev;
    Element() : prev(NULL), next(NULL) {}
    explicit Element(const ValueType &value)
      : prev(NULL), next(NULL), data(value) {}
    Element(Element *prev_, Element *next_, const ValueType &value)
      : prev(prev_), next(next_), data(value) {}
  };
  Element *ElementAt(size_t position) {
    Element *result = first_;
    while (result != NULL && position-- != 0)
      result = result->next;
    return result;
  }
  Element *LastElement() {
    if (first_ == NULL)
      return NULL;
    Element *result = first_;
    while (result->next != NULL)
      result = result->next;
    return result;
  }
  Element *first_;
  size_t size_;
};
 
class Product {
 public:
  Product() : name_(NULL) {}
  explicit Product(bool) : name_(NULL) {
    char buffer[4] = {0, 0, 0, 0};
    // RAnDoM
    for (int i = 0; i < 3; ++i)
      buffer[i] = rand() % 10 + 'a';
    Name(buffer);
    Count((rand() % 10000) / 100.);
    Price((rand() % 10000) / 100.);
  }
  Product(const Product &other)
    : name_(NULL), count_(other.Count()), price_(other.Price()) {
    Name(other.Name());
  }
  ~Product() {
    delete [] name_;
  }
  void Name(const char *value) {
    delete [] name_;
    name_ = strcpy(new char[strlen(value) + 1], value);
  }
  void Count(float value) { count_ = value; }
  void Price(float value) { price_ = value; }
  char *Name() const { return name_; }
  float Count() const { return count_; }
  float Price() const { return price_; }
  friend std::ostream &operator<<(std::ostream &s, const Product &product) {
    s << "Product: " << product.Name() << std::fixed
      << " X " << product.Count()
      << " X " << product.Price() << " rub." << std::endl;
  }
 private:
  char *name_;
  float count_;
  float price_;
};
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
 
  List<Product> a;
  for (int i = 0; i < 10; ++i)
    a.PushBack(Product(true));
 
  std::cout << a.Size() << std::endl;
  // доступ к элементам массива по позиции.
  // каждый раз идет перебор всех элементов до позиции
  for (int i = 0; i < a.Size(); ++i)
    std::cout << a.At(i);
  std::cout << std::endl;
 
  // получение последовательного доступа при помощи
  // итератора. доступ последовательный.
  for (List<Product>::Iterator j = a.Begin(); j != a.End(); ++j)
    std::cout << *j;
  std::cout << std::endl;
 
  return 0;
}
 
Текущее время: 23:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru