Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
KyuH
1

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

07.05.2013, 00:56. Показов 4011. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста! Нужно заполнить очередь положительными и отрицательными числами. Что нужно дописать?
Полностью задание звучит так: "Разработать функцию, которая по одной очереди строит две новых: 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;
}
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2013, 00:56
Ответы с готовыми решениями:

Заполнение одномерного массива и положительными, и отрицательными числами
Как сделать так, чтобы массив а размерностью n заполнялся случайными числами, среди которых должны...

Разделить двухмерный массив на два линейных - с положительными и отрицательными числами
Создать заданный массив 10 на 10 элементов содержащие положительные и отрицательные числа.Создать 2...

Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами
Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами....

Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом
Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом...

2
Мой лучший друг-отладчик!
167 / 167 / 30
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
07.05.2013, 01:29 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
#include <iostream>
#include <queue>
 
using namespace std;
 
 
void show_queue(queue<int>&q)
{
    while(!q.empty())
    {
        cout<<q.front()<<' ';
        q.pop();
    }
}
 
void create_queue(queue<int> &main)
{
    queue<int> plus;
    queue<int> other;
    while(!main.empty())
    {
        main.front()>0 ? plus.push(main.front()) : other.push(main.front());
        main.pop();
    }
    show_queue(plus);
    cout<<endl;
    show_queue(other);
    cout<<endl;
}
 
void fill_queue(queue<int>&main)
{
    main.push(1);
    main.push(0);
    main.push(-1);
    main.push(-10);
    main.push(21);
}
 
int main()
{
    queue <int> main;
    fill_queue(main);
    create_queue(main);
    system("pause");
    return 0;
}
Извините, что код не очень грамотно написан - нет особо времени.
1
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
07.05.2013, 10:36 3
Если не смущают функции с побочным эффектом, то вот простенький пример.
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
#include <iostream>
#include <queue>
#include <ctime>
#include <cstdlib>
 
template<class T>
void splitEvensAndOdds(std::queue<T> &source, std::queue<T> &evens,
  std::queue<T> &odds) {
  while (!source.empty()) {
    if (source.front() % 2 == 0) {
      evens.push(source.front());
    } else {
      odds.push(source.front());
    }
    source.pop();
  }
}
 
int main(int argc, char *argv[]) {
  std::queue<int> source, evens, odds;
  
  for (int i = 0; i < 100; ++i) {
    source.push(rand() % 11 - 5);
  }
 
  splitEvensAndOdds(source, evens, odds);
  
  for (; !evens.empty(); evens.pop()) {
    std::cout << evens.front() << " ";
  }
  std::cout << std::endl;
 
  for (; !odds.empty(); odds.pop()) {
    std::cout << odds.front() << " ";
  }
  std::cout << std::endl;
  
}
0
07.05.2013, 10:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2013, 10:36
Помогаю со студенческими работами здесь

Заполнение матрицы случайными отрицательными числами
Как сделать рандоме с отрицательными числами?

Задан файл с отрицательными и положительными целыми числами. Записать в другой файл сначала отрицательные, а потом положительные числа
Помогите пожалуйста!!!правда очень важно!! Задан файл с отрицательными и положительными целыми...

Заполнение SrtingGrid положительными и отрицательными числами
Здравствуйте. Как заполнить StringGrig случайными положительными и отрицательными числами? И еще...

Файлы. Дан файл с положительными и отрицательными числами, записать их в новый файл по очереди
Дан файл f с положительными и отрицательными числами, записать их в новый файл по очереди (полож,...

Как заполнить массив и отрицательными и положительными числами
это только положительными, а как чтобы и отрицательными и положительными??? Заранее благодарю. ...

Заполните двумерный массив отрицательными и положительными целыми случайными числами
Задания 1. 1.Заполните двумерный массив отрицательными и положительными целыми случайными числами....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru