Форум программистов, компьютерный форум, киберфорум
Наши страницы

Констуркторы, деструкторы.... - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ При удалении динам.массива Segmentation failure http://www.cyberforum.ru/cpp-beginners/thread287955.html
Программа работает но когда удаляем delete buf; то возникает Segmentation failure.... без его удаления всё нормально... #include <iostream> #include <stdio.h> #include <string.h> using...
C++ Прикрутить CppCheck к Code:Blocks Вот решил познакомиться с этой известной средой (переустановил Винду и понял, что MSVS ставить уже не хочу)) Все поставил, все работает, но вот начал ковыряться в плагинах и нашел на просторах инета... http://www.cyberforum.ru/cpp-beginners/thread287945.html
C++ Среднее значение в СМО
В условии дано среднее значение Х заявок в месяц в течении 6 месяцев.Как можно это реализовать получая конкретные числа.Про что почитать?Я так понял разброс может быть от 0 до 2Х, но чтобы среднее...
Массив структур. Фун-я удаления и поиска. C++
Первый курс. Решили над нами сделать эксперимент и дали нам курсовую. В принципе ничего сложного абсолютно, подобное задание в первом семестре но на паскале я делал. А вот с С++ не получается:( ...
C++ Строки и функции http://www.cyberforum.ru/cpp-beginners/thread287929.html
Программа выводит все цитаты из текста,считанного из файла. Надо оформить ее с помощью функции. Когда я пытаюсь сделать функцию, появляется несоответствие типов. Как сделать правильно? Подскажите,...
C++ Шифрование Xor'ом Добрый день, уважаемые) тут такое дело, сел делать курсач и столкнулся с проблемой. Работа по шифрованию бинарными операциями и преподаватель дал алгоритм для шифрования XOR'ом...Но тут проблема - в... подробнее

Показать сообщение отдельно
lemegeton
2933 / 1362 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
07.06.2011, 00:53
Проще не выйдет, но можно сделать примитивней.
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
#include <iostream>
#include <string>
 
struct Book {
  std::string author;
  std::string name;
  Book() : author(""), name("") {}
  Book(const std::string &author_, const std::string name_)
    : author(author_), name(name_) {}
};
 
class SimpleQueue {
 public:
  SimpleQueue() { base_.next = base_.prev = &base_; }
  SimpleQueue(const SimpleQueue  &other) {
    base_.next = base_.prev = &base_;
    NodeBase *node = other.base_.next;
    while (node != &(other.base_)) {
      PushBack(static_cast<Node*>(node)->value);
      node = node->next;
    }
  }
  ~SimpleQueue() { Clear(); }
  void PopFront() {
    // тут надо предусмотреть, что список не пуст
    Node *node = static_cast<Node*>(base_.next);
    node->prev->next = node->next;
    node->next->prev = node->prev;
    delete node;
  }
  Book &Front() const {
    // тут надо предусмотреть, что список не пуст
    return static_cast<Node*>(base_.prev)->value;
  }
  void PushBack(const Book &value) {
    Node *node = new Node;
    node->value = value;
    node->next = &base_;
    node->prev = base_.prev;
    node->next->prev = node->prev->next = node;
  }
  bool Empty() {
    return (base_.next == &base_) && (base_.prev == &base_);
  }
  void Clear() {
    while (!Empty())
      PopFront();
  }
  void Print() {
    for (NodeBase *node = base_.next; node != &base_; node = node->next)
      std::cout << "Author: "<< static_cast<Node*>(node)->value.author
                << std::endl
                << "Name: " << static_cast<Node*>(node)->value.name
                << std::endl << "-----" << std::endl;
  }
  SimpleQueue AuthoredBy(const std::string &author) {
    SimpleQueue result;
    for (NodeBase *node = base_.next; node != &base_; node = node->next)
      if (static_cast<Node*>(node)->value.author == author)
        result.PushBack(static_cast<Node*>(node)->value);
    return result;
  }
 private:
  struct NodeBase {
    NodeBase *next;
    NodeBase *prev;
  };
  struct Node: public NodeBase {
    Book value;
  };
  NodeBase base_;
};
 
int main(int argc, char *argv[]) {
  SimpleQueue queue;
 
  queue.PushBack(Book("Prattchet", "Colour of Sky, The"));
  queue.PushBack(Book("Melville", "Moby-Dick"));
  queue.PushBack(Book("Prattchet", "Wizzard"));
 
  SimpleQueue copy(queue);
  queue.PopFront();
  
  std::cout << std::endl << "Queue:" << std::endl << std::endl;
  queue.Print();
 
  std::cout << std::endl << "Copy:" << std::endl << std::endl;
  copy.Print();
 
  std::cout << std::endl << "Authored by Prattchet:" << std::endl << std::endl;
  copy.AuthoredBy("Prattchet").Print();
  return 0;
}
Добавлено через 5 минут
Цитата Сообщение от CFYZ Посмотреть сообщение
Возможно Вы могли бы его упростить, до минимального уровня, что бы он был похож на мой код?
К сожалению, до минимального уровня не могу. По меньшей мере не могу использовать односимвольные или не говорящие идентификаторы -- путаюсь. Ну и общая стилистика уже как-то устоялась. Но вы можете всё это легко исправить с помощью инструмента замены в вашем любимом текстовом редакторе.

Не по теме:

Цитата Сообщение от CFYZ Посмотреть сообщение
Подправьте если не сложно, что бы это выглядело более профессионально.
Цитата Сообщение от CFYZ Посмотреть сообщение
Возможно Вы могли бы его упростить, до минимального уровня, что бы он был похож на мой код?
Вам шашечки или ехать?

0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru