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

Контейнер из неоднородных элементов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ wxDev, не работает inp и outp http://www.cyberforum.ru/cpp-beginners/thread314282.html
Подскажите пожалуйста, какую библиотеку в wxDev используют функции inp и outp для работы с портами? conio.h и dos.h не помагают. Пишет: undefined reference to `outp' undefined reference to `inp' Добавлено через 1 час 12 минут подозреваю что этих функций нет, тк это работает только под дос. :( Следовательно, вопрос: а можно ли под win7 работать с портами, в частности...
C++ Битовое представление Здравствуйте! Напишите пример функции, которая принимает целое число и выводит его битовое представление . int Bit_Representation (int int_number) Спасибо! http://www.cyberforum.ru/cpp-beginners/thread314274.html
Срочно!!! Бок с массивом C++
Надо создать массив с условием: -что его можно вводить(при выполнение программы) -а потом считывать сколько элементов в нем(и сразу выводится на экран) З.Ы. Вроди бы не сложно а вот не могу
C++ Массивы в С++
В одномерном массиве, состоящем из 10 целых элементов, вычислить:сумму элементов массива, расположенных между первым и вторым отрицательными элементами. Добавлено через 1 минуту #include <conio.h> #include <stdio.h> #include <math.h> #include <stdlib.h> #include <windows.h> void main(void) { int a;
C++ Определить ,является ли граф связным.Граф задан списком связей http://www.cyberforum.ru/cpp-beginners/thread314261.html
Определить ,является ли граф связным.Граф задан списком связей. как вобще делаются графы на С???????? не понимаю как делать....(((
C++ Написать функцию, которая сортирует вещественный массив методом Хоара Написать функцию ,которая сортирует вещественный массив методом Хоара по убыванию суммы разности тангенса и котангенса элементов на С не понимаю как делать((( подробнее

Показать сообщение отдельно
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 426

Контейнер из неоднородных элементов - C++

06.06.2011, 17:27. Просмотров 935. Ответов 9
Метки (Все метки)

Хотел сначала написать в раздел С для экспертов, но выяснилось- прав не имею.
Есть такая задача (даже несколько разновидностей) дается в Бауманке на 1 или 2 курсе:
Моделировать очередь (руками), в качестве элементов которой могут использоваться числа и слова. Операции: добавление элемента, удаление элемента, печать элементов. Соз-дать класс - потомок, который содержит процедуру сортировки слов по алфавиту.
Я ее сделал немалой кровью правда.
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
 class TElement
{ public:
TElement *nxt;
TElement() { nxt=NULL;}
      virtual ~TElement() {cout<<"Delete TElement.";}
      virtual void Print()=0;
     };
class TQueue
{
public:
  TQuue();//конструктор
  ~TQueue();  //деструктор
  TElement *First(){return cur=first;}
  TElement *Last(){return cur=last;}
  TElement *Next(){return cur=cur->nxt;}
  void addEL(TElement *val);//добавление элемента
  void delEL(); //удаление 1 элем
   void print();
private:
 TElement *first,*last,*cur;
 };
   TQueue::TQuue() //конструктор
   {first=last=cur=NULL;}
 TQueue::~TQueue()  //деструктор
 {TElement *cur1;
  cur1=first;
     while (cur!=NULL) {
     cur=cur1->nxt;
     delete(cur1);
                        }
   }
  void TQueue::addEL(TElement *e)  //добавление элемента
 {
  if (first==NULL)
        { first=last=e; e->nxt=NULL;}
   else
   { e->nxt=first;first=e;}
 }
 
 void TQueue::delEL()
  {//удаление 1 элем
   first=first->nxt;
  }
 
 void TQueue::print()
  {
    cur=first;
      while (cur!=NULL)
      {cur->Print(); cur=cur->nxt;}
  }
 //--------------------------------------------
 class TNum:public TElement
 { 
 public:
 int num;
    TNum(int n):TElement(),num(n) {}
    virtual ~TNum() {cout<<"Delete TNum.";}
    virtual void Print() { printf("%d ",num); }
      };
//--------------------------------------------
 class TSlovo:public TElement
 { public:
       char s[20];
    TSlovo(char *S):TElement() {strcpy(s,S);}
    virtual ~TSlovo() {cout<<"Delete TChar.";}
    virtual void Print() { printf("%s ",s);}
 };
 
class TQueueS: public TQueue
{
 public:
 void sort(TElement * first);
};
void TQueueS::sort(TElement * first)
{ int i;
 TElement *a; TElement *b; char tmp[20];  TSlovo *A;TSlovo *B;
 a = first;
 while ((A =dynamic_cast<TSlovo *>(a))==0)
     a=a->nxt;//продвигаемся до 1-го элемента-строки
 while(a->nxt) // пока существует следующий элемент
 {
   b = a->nxt;
   while(b)  // для каждого элемента перебираем все оставшееся справа
      {
       while ((B=dynamic_cast<TSlovo *>(b))==0 )
          { b=b->nxt;   if (!b) return;}; //продвигаемся до 1-го элемента-строки
      if(strcmp(A->s,B->s)>0)//если порядок не тот - меняем
        { strcpy(tmp, A->s);strcpy(A->s,B->s); strcpy(B->s,tmp); }
        b = b->nxt;
      }
      while ((A =dynamic_cast<TSlovo *>(a))==0)
         a = a->nxt;  //продвигаемся до следующего элемента-строки
 }
}
Особенно напрягла процедура сортировки строк - ведь тут для перехода к следующему элементу мало
a = a->nxt; а надо делать цикл типа
C++
1
2
while ((A =dynamic_cast<TSlovo *>(a))==0)
         a = a->nxt;
Так что даже простой пузырек выглядит нетривиально
Хочу спросить опытных людей: а на хрена вообще вся эта конструкция - неоднородный контейнер любого вида? Где применяется?
напоминает чем то UNION в SQL - там UNION тоже редко используется
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru