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

Добавить элементы в очередь - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подскажите где ошибка в классе http://www.cyberforum.ru/cpp-beginners/thread858184.html
вот сам класс #include <iostream> #include <stdlib.h> #include <iomanip> #include <time.h> #include <string> using namespace std; // использую потому что нет риска пересечения пространства имен. class Fight{
C++ Передача динамического массива в функции #include <iostream> #include <cstdlib> using namespace std; /*const*/ int k=3; //void sum (int mas); void sum (int * arr, int k, int t); //void max(int matrix); void max(int * arr ,int g, int r); http://www.cyberforum.ru/cpp-beginners/thread858170.html
Подсчитать количество слов,начинающихся с указанной буквы C++
Ребят,помогите пожалуиста. вот ,есть задачка: Дан текст произвольной длины,оканчивающийся точкой.текст состоит из слов,разделенных пробелами.Подсчитать количество слов,начинающихся с указанной буквы; Я программку написала,он считает слова,а главного условия,т.е счичать не все слова,а именно,с указанной буквы,не считает вот сама прога: #include <stdio.h> #include<string.h> enum{OUT,IN};...
C++ Найти максимальное и минимальное значение функции
Просьба решить задачку, так как я сам ни бум бум...=( А через пару недель нужно перездать зачет. Очень прошу помочь!! Составить таблицу значений заданной функции. Найти максимальное и минимальное значение функции, соответствующие им значения аргументов для каждого значения параметра. Шаг изменения аргумента и параметра студент выбирает самостоятельно так, чтобы число значений параметров было...
C++ Реализация семафоров http://www.cyberforum.ru/cpp-beginners/thread858153.html
Возможно ли реализовать семафоры вручную или же для этого нужна обязательная поддержка процессора?
C++ Как распарсить строку и положить данные в элементы структуры Здравствуйте! Интересует следующий вопрос. У нас есть есть строка. Например, ab|ac|ad|ae|af|ag|ah. И есть структура -> struct table { string ab, ac, ad, ae, af, ag, ah; }; Задача состоит в том, чтобы из строки вытащить значения, какими являются ab, ac, .., ah. Я написал кусок кода, который вытаскивает эти значения. Но т.к. это дело происходит в цикле, я не могу на каждом шаге записать... подробнее

Показать сообщение отдельно
Akana
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 29
07.05.2013, 12:12     Добавить элементы в очередь
Помогите пожалуйста! Необходимо добавить элементы в очередь, не используя стандартное пространство имен очередей. Функции добавления элемеентов в принципе есть, только у меня не получается...Вот код:
Прототипы функций:
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
#pragma once
#define MYQUEUE1_EQE   0x0000        // возврат в случае пустоты очереди 
#define MYQUEUE1_EXC   100           // серия кодов исключений 
//----------------------------------------------------------
struct Queue                         // блок управления очередью 
{
 int    Head;                        // голова очереди
 int    Tail;                        // хвост очереди
 int    Size;                        // размер очереди (максимальное количество элементов+1)
 void** Storage;                     // хранилище данных очереди 
 Queue(int size)
 { 
   Head = Tail = 0;
   Storage = new void*[Size = size+1]; // !!! физический размер очереди =  (максимальное количество элементов +1)
 };
bool isFull() const;                    // очередь заполненa ?
bool isEmpty()const;  
// очередь пустa ? 
};
 
//---------------------------------------------------------
Queue CreateQueue(int n);             // выделить ресурса для очереди: n - максимальное количество элементов очереди 
Queue CreateQueue(const Queue& pq);   // создать очередь по образцу 
bool  Enq(Queue& q, void* x);         // добавить x в очередь s
void* Deq(Queue& q);                  // удалить элемент из очереди
void* Peek(const Queue& q);           // получить первый элемент очереди
int  ClearQueue(Queue& q);            // очистить очередь
void ReleaseQueue(Queue& q);          // освободить ресурсы очереди
Собственно сами функции:
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
#include "stdafx.h"
#include <string.h>
#include "MyQueue_1.h"
#include <assert.h>
//------------------------------------------------------------------------
Queue CreateQueue(int n)            // выделить ресурса для очереди
{
 return *(new Queue(n));
};
//-----------------------------------------------------------------------
Queue CreateQueue(const Queue& pq)   // создать очередь по образцу
{
 Queue *rc = new Queue(pq.Size-1);   
 rc->Head = pq.Head;
 rc->Tail = pq.Tail;
 for (int i = 0; i < pq.Size; i++) rc->Storage[i] = pq.Storage[i]; 
 return *rc;
}
//-----------------------------------------------------------------------
bool  Enq(Queue& q, void* x)          // добавить x в очередь s
{
 bool rc = true;
 if (rc = !q.isFull())
 {
  q.Storage[q.Tail] = x;
  q.Tail=(q.Tail+1)%q.Size;
 }
 else 
 return false ; return rc; 
};
//-------------------------------------------------------------------------
void* Deq(Queue& q)                   // удалить элемент из очереди
{
void* rc = (void*)MYQUEUE1_EQE;
 if (!q.isEmpty())
 {
  rc = q.Storage[q.Head];
  q.Head=(q.Head+1)%q.Size;
 }
 return rc; 
}
//-------------------------------------------------------------------------
void* Peek(const Queue& q)
{
void* rc = (void*)MYQUEUE1_EQE;
 if (!q.isEmpty())
    rc = q.Storage[q.Head];
 return rc; 
}  
 
//-------------------------------------------------------------------------
int  ClearQueue(Queue& q)            // очистить очередь
{
    int rc =  (q.Tail - q.Head)>=0?(q.Tail - q.Head):(q.Size-q.Head+q.Tail+1);
 q.Tail = q.Head = 0;
 return rc;                           // количество элементов в очереди до очистки
}
//-------------------------------------------------------------------------
void ReleaseQueue(Queue& q)           // освободить ресурсы очереди
{
 delete[] q.Storage;
 q.Size = 1;
 q.Head = q.Tail = 0;
}
//---------------------------------------------------------------------------
void AppendQueue(Queue& to, const Queue& from)   // добавить одну очередь к другой ()
 
 
 { 
     for (int i = from.Head; i!= from.Tail; (++i)%from.Size) 
         Enq(to, from.Storage[i]); 
 }
 
//---------------------------------------------------------------------------
bool Queue::isFull() const {return (Head%Size == (Tail+1)%Size);};  // очередь заполненa ?
bool Queue::isEmpty()const {return (Head%Size == Tail%Size);};     // Очередь пустa ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru