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

Стек на основе массива структур - эт как понять читаю литературу и не могу понять! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчитать сумму элементов массива, расположенных между заданными http://www.cyberforum.ru/cpp-beginners/thread750515.html
В одномерном целочисленном массиве (элементы массива генерируются случайным образом диапазоне от -100 до 100), подсчитать сумму элементов, расположенных между первым положительным элементом массива и последним отрицательным элементом. Задачу реализовать с выполнением следующих условий: 1) размер массива n вводится с клавиатуры, память под массив выделяется динамически; 2)реализовать функцию...
C++ Массив функций Необходимо создать во время выполнения массив функций, как такое можно обеспечить? http://www.cyberforum.ru/cpp-beginners/thread750510.html
где найти инклюд graph.h и simple_window.h ? C++
Всем привет. Решил вот попробовать вывести простую графику в visual c++ (учусь по книге с нее и списал) #include "graph.h" #include "simple_window.h" int main(){ using namespace Graph_lib; Point t1(100,100); simple_window win(t1,600,400,"Canvas");
C++ Построчное чтение, с "возвратом" назад
Здравствуйте. Читаю файл построчно. Есть маленькая проблема в том, что перед "основным" чтением мне надо проверить параметр, расположенный на 3-ей строке файла. Далее нужно "вернуться" на первую строку. Хватит ли тут использования fgetpos и fsetpos? Можно ли потом будет продолжать "нормально" читать файл построчно? :) CFxSystem *__fastcall RegisterFxSystem(CParticleData *prtData, int edx0, char...
C++ Присвоить значения переменной Х http://www.cyberforum.ru/cpp-beginners/thread750507.html
Присвоить значение переменной х и всем объектам, что с ней связаны. struct a { char ***s; char (*p) }; typedef struct a * data data x
C++ Не работает поиск в глубину (DFS) Вот код (заполнен для ориентированного графа 0 2 | + +/ 1--+3--+4 | + 5--+6 | подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
31.12.2012, 20:57     Стек на основе массива структур - эт как понять читаю литературу и не могу понять!
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
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <stdexcept>
#include <string>
 
template<class T>
class StaticStack {
 public:
  explicit StaticStack(size_t capacity) : capacity(capacity), cursor(0),
    stack(new T[capacity]) {}
  virtual ~StaticStack() {
    delete [] stack;
  }
  bool isEmpty() const { return cursor == 0; }
  size_t getSize() const { return cursor; }
  size_t getCapacity() const { return capacity; }
  const T &getTop() const {
    if (isEmpty()) 
      throw std::underflow_error("stack is empty");
    else
      return stack[cursor - 1];
  }
  void push(const T &value) {
    if (getSize() >= getCapacity())
      throw std::overflow_error("stack overflow");
    else
      stack[cursor++] = value;
  }
  T pop() {
    if (isEmpty()) 
      throw std::underflow_error("stack is empty");
    else
      return stack[--cursor];
  }
 private:
  StaticStack(const StaticStack &);
  StaticStack &operator=(const StaticStack &);
  size_t capacity;
  size_t cursor;
  T *stack;
};
 
class Product {
 public:
  Product() : id(), name(), cost(), bestForDays() {}
  Product(int id, const std::string &name, double cost, int bestForDays)
    : id(id), name(name), cost(cost), bestForDays(bestForDays) {}
  int getId() const { return id; }
  const std::string &getName() const { return name; }
  double getCost() const { return cost; }
  int getBestForDays() const { return bestForDays; }
 private:
  int id;
  std::string name;
  double cost;
  int bestForDays;
};
 
Product getRandomProduct() {
  static const std::string names[] = {"milk", "tea", "peanut", "bread", "apple"};
  static int lastId = 0;
  return Product(lastId++, names[rand() % (sizeof(names) / sizeof(std::string))],
    (1000 + rand() % 1000) / 100., 10 + rand() % 7);
}
 
std::ostream &operator<<(std::ostream &stream, const Product &product) {
  stream << "Product{"
    "id=" << product.getId() << "," <<
    "name=" << product.getName() << "," <<
    "cost=" << product.getCost() << "," <<
    "bestForDays=" << product.getBestForDays() << "}";
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
  StaticStack<Product> stack(15);
 
  try {
    for (int i = 0; i < 10 + rand() % 10; ++i)
      stack.push(getRandomProduct());
  } catch (std::overflow_error e) {
    std::cout << "Error. Stack capacity is " << stack.getCapacity() <<
      ", stack is full. No more elements allowed." << std::endl;
  }
 
  std::cout << "Number of products: " << stack.getSize() << std::endl;
  while (!stack.isEmpty()) {
    std::cout << stack.pop() << std::endl;
  }
  
  std::cin.peek();
  return 0;
}
 
Текущее время: 20:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru