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

Стек и очередь для хранения объектов типа Coord - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Кротяка
 Аватар для Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 370
27.05.2012, 23:09     Стек и очередь для хранения объектов типа Coord #1
Ниже представлен пример класса Coord. Напишите программу для хранения объектов типа Coord, используя последовательные контейнеры стека и очереди.

C++
1
2
3
4
5
6
class Coord{
public:
int x,y;
Coord(){x=y=0};
Coord(int a, int b) {x=a;y=b;}
};
Добавлено через 9 часов 31 минуту
ребят, срочно надо, помогите кто шарит...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Martovskij
98 / 38 / 7
Регистрация: 30.01.2011
Сообщений: 129
Завершенные тесты: 4
28.05.2012, 00:31     Стек и очередь для хранения объектов типа Coord #2
щас. напишу. с циклической очередью.

Добавлено через 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
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
// сс.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "conio.h"
#include <math.h>
#include <iostream>
 
 
#define COORD_STACK_SIZE 10
#define COORD_QUEUE_SIZE 10
 
using namespace std;
 
class Coord{
public:
int x,y;
Coord();
Coord(int , int );
~Coord(){};
};
 
Coord::Coord(int a, int b)
{
  x=a;
  y=b;
}
 
Coord::Coord() 
{
  x=y=0;
}
 
/*---Глобальные пременные ---*/
 
Coord coord_stack[COORD_STACK_SIZE]; // Массив для хранения объектов типа Coord по принципу стека
Coord coord_queue[COORD_QUEUE_SIZE]; // Массив для хранения объектов типа Coord по принципу циклической очереди
int head = 0;                        // Указатель головы
int end_b = 0;                         // Указатель хвоста
int count_obj = 0;                   // Счетчик занятых ячеек
/*--------------------------*/
 
/*-----Прототипы обработчиков-------*/
void  put_coord_to_stack(Coord);     // Функция для складывания объекта в стек
Coord pop_coord_from_stack(void);    // Функция для извлечения объекта из стека
int stack_counter = 0;               // Указатель стека
 
void  write_coord_to_queue(Coord);   // Запись в очередь
Coord read_coord_from_queue(void);   // Чтение из очереди
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{  
   
    
    // Положите сюда ваш код
    
    return 0;
}
 
 
 
void  put_coord_to_stack(Coord obj)
{
   if (stack_counter == 10) return; // Если стек полон - выходим
   coord_stack[stack_counter] = obj;
   stack_counter++;
   cout << "pushing object to stack" << endl;
}
 
Coord pop_coord_from_stack(void)
{
   cout << "poping object from stack" << endl;
   return coord_stack[stack_counter--];
}
 
void  write_coord_to_queue(Coord obj)
{
    if (count_obj == COORD_QUEUE_SIZE ) return; // Если буфер полон - выходим
    if (head == COORD_QUEUE_SIZE) head = 0; // Если достигли конца буфера - переходим вначало
      coord_queue[head++] = obj;
}
 
Coord read_coord_from_queue(void)
{
   if (count_obj == 0 ) return coord_queue[end_b];  // Если буфер пуст - выходим
   if (end_b == COORD_QUEUE_SIZE) end_b = 0; // Если достигли конца буфера - переходим вначало
     return coord_queue[end_b++];
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
28.05.2012, 01:13     Стек и очередь для хранения объектов типа Coord #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
39
40
41
42
#include <iostream>
#include <queue>
#include <stack>
 
class Coord
{
    friend std::ostream& operator<< (std::ostream &out, const Coord &c)
    {
        out << c.x<< " "<< c.y<< std::endl; 
        return out;    
    }
  public:
    Coord(){x = y = 0;}
    Coord(int a, int b):x(a), y(b) {}
  private:
    int x,y;
};
 
int main()
{
    std::queue <Coord> q;    
    q.push( Coord(1, 2) ); // äîáГ*âëÿåì ýëåìåГ*ГІГ» Гў î÷åðåäü
    q.push( Coord(2, 3) );
    q.push( Coord(3, 4) );
    std::cout<< "FIFO:\n";
    while (!q.empty()) // ïîêГ* î÷åðåäü Г*ГҐ ГЇГіГ±ГІГ*
    {
         std::cout<< q.front(); // âûâîäèì Г*Г* ГЅГЄГ°Г*Г* ïåðâûé ýëåìåГ*ГІ Гў î÷åðåäè
         q.pop(); // âûòГ*ëêèâГ*ГҐГ¬ ГҐГЈГ®
    }
    std::stack <Coord> st;
    st.push( Coord(1, 2) ); // äîáГ*âëÿåì ýëåìåГ*ГІГ» Гў Г±ГІГҐГЄ
    st.push( Coord(2, 3) );
    st.push( Coord(3, 4) );
    std::cout<< "LIFO:\n";
    while (!st.empty()) // ïîêГ* Г±ГІГҐГЄ Г*ГҐ ГЇГіГ±ГІ
    {
         std::cout<< st.top(); // âûâîäèì Г*Г* ГЅГЄГ°Г*Г* âåðõóøêó Г±ГІГҐГЄГ*
         st.pop(); // âûòГ*ëêèâГ*ГҐГ¬ ГҐВё ГЁГ§ Г±ГІГҐГЄГ*
    }
    return 0;
}
Кротяка
 Аватар для Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 370
28.05.2012, 09:52  [ТС]     Стек и очередь для хранения объектов типа Coord #4
Большое спасибо всем!!!
Yandex
Объявления
28.05.2012, 09:52     Стек и очередь для хранения объектов типа Coord
Ответ Создать тему
Опции темы

Текущее время: 06:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru