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

Заполнение очереди положительными и отрицательными числами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алфавит вивод http://www.cyberforum.ru/cpp-beginners/thread857977.html
Как сделать, при вводе числа, мне видавало соответвующею букву...Например ввожу 1 и мне выводится буква а....2 - b и т.д.? Добавлено через 4 минуты У меня програма должна так работать!!! Vvedite N: 5 (потом Enter) после чего, мне автоматически видает 10 чисел после 5 6 7 8 9
C++ Задача нахождения длины ломаной Условие: Ввод из: Стандартный ввод Время выполнения на одном тесте: 1 с Вывод в: Стандартный вывод Ограничение памяти программы на одном тесте: 1000 кб Курьер должен посетить n городов, и он не знает, сколько времени ему на это понадобится. Курьер понимает, что для этого нужно найти расстояния между городами, но он затрудняется сделать это. Помогите нерадивому курьеру справиться с... http://www.cyberforum.ru/cpp-beginners/thread857974.html
C++ В чем причина
Вообщем по идеи в следующим коде по матрице ну хотя-бы вообще должна бегать буква J. Но почему-то она стоит на месте. Не могу понять в чем косяк. #include <fstream> #include <iostream> #include <Windows> #include <conio.h> using namespace std; void push() {
Обратная матрица C++
Друзья, помогите пожалуйста с кодом. Нужен работающий простенький код на С++ для расчёта обратной матрицы, чтобы компилировался в microsoft visual C++. Если кому не тяжело, напишите пожалуйста, буду благодарен.
C++ Файлы. Удалить все первые элементы пар чисел, сумма которых превышает некоторое заранее заданное число http://www.cyberforum.ru/cpp-beginners/thread857963.html
Помогите решить задачу: дан файл с числами типа int. Не используя промежуточного файла и оперативной памяти, удалить все первые элементы пар чисел, сумма которых превышает некоторое заранее заданное число.
C++ итератор Привет всем! подскажите пожалуйста литературу где подробно описана реализация итераторов ... подробнее

Показать сообщение отдельно
KyuH
Сообщений: n/a
07.05.2013, 00:56     Заполнение очереди положительными и отрицательными числами
Здравствуйте, помогите пожалуйста! Нужно заполнить очередь положительными и отрицательными числами. Что нужно дописать?
Полностью задание звучит так: "Разработать функцию, которая по одной очереди строит две новых: Queue1 из положительных элементов и Queue2 - из остальных элементов очереди."
Вот код:
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 ?
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
// Queue.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include "MyQueue_1.h"
#include <ctime>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    struct str2
{
    char b;
    long a;
};
    Queue q1= CreateQueue(6);
    Queue q2= CreateQueue(6);
    Queue q3= CreateQueue(6);
 
    int a1=-3;
    Enq (q1,&a1);
            while (!q1.isEmpty()){
                if (Peek(q1)<0){
                        Enq(q2, Peek(q1));}
                    else 
                    {
                        Enq(q3, Peek(q1));}
                    Deq(q1);
                }
 
  std::cout << "negatives:";
   while (!q2.isEmpty()) {
      std::cout << ' ' << Peek(q2);
     Deq(q2);
   }
   std::cout << std::endl;
 
   std::cout << "positives:";
   while (!q3.isEmpty()) {
      std::cout << ' ' << Peek(q3);
      Deq(q3);
   }
   std::cout << std::endl;
 
   return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru