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

Помогите со стеком.. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Игра в камень,ножницы бумага.Что можно улучшить\оптимизировать? http://www.cyberforum.ru/cpp-beginners/thread378854.html
// KamenNozhnicyBumaga.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "time.h" #include "stdio.h" #include "stdlib.h" int _tmain(int argc, _TCHAR* argv)
C++ Простейший класс Разработать класс 1.Комплексное число 2. время 3. массив 4. дата 5. стек 6 строка 7. многочлен Любой из этих классов, очень буду благодарен!!! http://www.cyberforum.ru/cpp-beginners/thread378848.html
wchar_t C++
что ето за тип данних: wchar_t скок у нему байт??
C++ Подскажите! Интерпретатор форматов...
Доброго времени суток, Ув.! Была поставлена задача написать программку, которая будет производить открытие файлов с разными расширениями doc, rtf, docx, bmp, pcx, jpg...эт ведь интерпретатор получается. А как это реализовать в С++? К примеру в С#, ищем файл и оупен... System.Diagnostics.Process.Start("имя_файла");, вроде так. Но тут в какую сторону копать...и что делать...а? Подскажите...
C++ Star Wars (V) http://www.cyberforum.ru/cpp-beginners/thread378828.html
Здравствуйте. Подскажите алгоритм решения задачи: Дано множество окружностей заданных своими координатами и радиусами. Нужно провести прямую таким образом чтобы она пересекала максимальное количество окружностей. Ну и собственно требуется определить количество этих окружностей. Вход. В первой строчке указано число окружностей. В следующих N (2 ≤ N ≤ 200) строчках указаны параметры этих...
C++ задачи c++ кому не трудно решите Matrix25. Дана матрица размера M × N. Найти номер ее строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы. подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
07.11.2011, 02:20     Помогите со стеком..
Без ввода. Значения задаются псевдо-случайно.
Ну и указатель на вершину указывает не на последний элемент, а на элемент, идущий за последним.
Так, видимо, и подразумевалось, иначе не определена ситуация в начале работы со списком, когда указатель на вершину равен указателю на начало стека...
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 <iterator>
#include <cstdlib>
#include <ctime>
 
template <class ValueType, size_t Size = 25>
class Stack {
 public:
  Stack() : begin_(NULL), end_(NULL), top_(NULL) {
    top_ = begin_ = new ValueType[Size];
    end_ = begin_ + Size;
  }
  ~Stack() {
    delete begin_;
  }
  void clear() {
    top_ = begin_;
  }
  size_t size() const { return top_ - begin_; }
  void push(const ValueType &value) {
    if (top_ >= end_) throw std::runtime_error("Stack overflow.");
    *top_++ = value;
  }
  ValueType pop() {
    if (top_ <= begin_) throw  std::runtime_error("Stack underflow.");
    return *(--top_);
  }
  ValueType head() {
    return *(top_ - 1);
  }
  ValueType tail() {
    return *begin_;
  }
  size_t capacity() const {
    return Size;
  }
  ValueType *begin() {
    return begin_;
  }
  ValueType *end() {
    return top_;
  }
 private:
  ValueType *begin_, *end_, *top_;
};
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  Stack<int, 5> stack;
  
  std::cout << "Stack capacity is " << stack.capacity() << std::endl;
  try {
    while (true) {
      int value = rand() % 11 - 5;
      if (value > 0) {
        std::cout << "Value is " << value << " Pushing." << std::endl;
        stack.push(value);
      } else if (value < 0) {
        std::cout << "Value is " << value << " Poping: ";
        std::cout << stack.pop() << std::endl;
      }
      std::cout << "Stack content: ";
      std::copy(stack.begin(), stack.end(), std::ostream_iterator<int>(
        std::cout, " "));
      std::cout << std::endl;
    }
  } catch (const std::exception &e) {
    std::cout << e.what() << std::endl;
  }
 
  return 0;
}
 
Текущее время: 04:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru