Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
PR[E]D@TOR
1 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 23
#1

Список с приоритетом, не работает программа - C++

05.06.2013, 01:11. Просмотров 463. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста отладить программу. Данные в список записываются, но не удаляются и не выводятся. В чем ошибка?
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// QwP.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class QueryIsEmpty: public std::exception
{
 virtual char *what ()
 {
  static char s[]="Query is empty";
  return s;
 }
}; 
struct list
{
 int value;
 unsigned int prioritet;
 list *next;
};
list *query=nullptr;
 
void FreeQuery(list *&query);
void AddItemToQuery(list *&query, list &item);
list ReadFromQuery(list *&query);
 
void main()
{
 int c;
 list item;
 setlocale(LC_ALL, "Russian");
 for (;;)
 {
 do
 {
  cout<<"1 - Добавить в очередь"<<endl;
  cout<<"2 - Читать очередь"<<endl;
  cout<<"3 - Очистить очередь"<<endl;
  cin>>c;
  cout<<endl;
  switch (c)
  {
   case 1: cout<<"Данные элемента: ";
             cin>>item.value;
             cout<<"Приоритет элемента: ";
             cin>>item.prioritet;
             cout<<endl;
             AddItemToQuery(query, item); 
             break;
   
   case 2: item=ReadFromQuery(query);
             cout<<"Данные элемента: "<<item.value<<"."<<endl;
             break;
 
   case 3: FreeQuery(query);
             break;
   default : cout<<"Не правильный вариант."<<endl;
  }
 } while (c!=1);
 //return 0;
}
}
 
void FreeQuery(list *&query)
{
 list *b=query;
 list *p;
 while (query!=nullptr)
 {
  p=query->next;
  delete query;
  query=b;
 }
}
 
void AddItemToQuery(list *&query, list &item)
{
 list *p;
 list *b;
 if (query==NULL)
 {
  query=new list;
  query->value=item.value;
  query->prioritet=item.prioritet;
  query->next=nullptr;
 }
 else
 {
  for (p=query; (p->next!=nullptr)&&(p->next->prioritet<=item.prioritet); ++p);
  if (p->next!=nullptr)
  {
   b=new list;
   b->next=p->next;
   p->next=b;
  }
  else
  {
   p->next=new list;
  }
  p->next->value=item.value;
  p->next->prioritet=item.prioritet;
 }
}
 
list ReadFromQuery(list *&query)
{
// list r;
 list *b;
 if (query==nullptr)
 {
  throw QueryIsEmpty();
 }
 else
 {
  list r=*query;
  b=query;
  query=query->next;
  delete b;
 }
}
Добавлено через 22 минуты
Помогите пожалуйста найти ошибку, уже несколько дней ломаю голову над эти кодом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 01:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Список с приоритетом, не работает программа (C++):

Очередь с приоритетом. Элементы с наивысшим приоритетом ставятся в начало очереди, с наименьшим – в конец - C++
Здравствуйте! имеется задание: создать очередь с приоритетом (у каждого элемента свой приоритет). Элементы с наивысшим приоритетом ставятся...

Параметризованный класс(поле - список адаптера контейнера - очередь с приоритетом) - C++
Надо реализовать адаптер контейнера: приоритетная очередь на осонове списка. Должно оно быть описано в сообстенном параметризированом...

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает - C++
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею в ввиду что сделал прогу которая меняет...

Программа , которая выводит время, за которое программа работает - C++
Вообщем, нужно что бы считалось время от начала работы программы, и выводилось на экран.

Программа работает в турбо си но не работает в дев си - C++
#include&lt;graphics.h&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; #include&lt;dos.h&gt; #define R &quot;C:\\TC\\bgi&quot; void...

Очередь с приоритетом - C++
Помогите, пожалуйста, создать из моего класса очередь с приоритетом(приоритетом является money). #include &lt;iostream&gt; #include...

4
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2013, 01:25 #2
Тут что-то возвращается?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
list ReadFromQuery(list *&query)
{
// list r;
 list *b;
 if (query==nullptr)
 {
  throw QueryIsEmpty();
 }
 else
 {
  list r=*query;
  b=query;
  query=query->next;
  delete b;
 }
}
Что тогда здесь будет выводиться?
C++
1
2
3
case 2: item=ReadFromQuery(query);
             cout<<"Данные элемента: "<<item.value<<"."<<endl;
             break;
0
PR[E]D@TOR
1 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 23
05.06.2013, 02:54  [ТС] #3
Понял прокол, но не могу понять как его исправить, голова уже совсем плохо варит, а завтра сдавать.
Подскажите пожалуйста как исправить.

Добавлено через 1 час 26 минут
помогите пожалуйста...
0
PR[E]D@TOR
1 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 23
07.06.2013, 01:12  [ТС] #4
помогите доработать функцию добавления так, чтобы при добавлении узла в список, список сразу же упорядочивался. элементы с наименьшим приоритетом должны стоять в начале списка а далее по возрастанию приоритетов.
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
void AddItemToQuery(list *&query, list &item)
{
 list *p;
 list *b;
 if (query==NULL)
 {
  query=new list;
  query->value=item.value;
  query->prioritet=item.prioritet;
  query->next=nullptr;
 }
 else
 {
     for (p=query; (p->next!=nullptr)&&(p->next->prioritet<=item.prioritet); p=p->next);
  if (p->next!=nullptr)
  {
   b=new list;
   b->next=p->next;
   p->next=b;
  }
  else
  {
   p->next=new list;
  p->next->value=item.value;
  p->next->prioritet=item.prioritet;
  p->next->next=0;
  }
 }
}
0
PR[E]D@TOR
1 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 23
09.06.2013, 14:37  [ТС] #5
помогите пожалуйста
0
09.06.2013, 14:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2013, 14:37
Привет! Вот еще темы с ответами:

Очередь с приоритетом - C++
Здравствуйте! Нужна ваша помощь! Не могу разобраться в чём проблема. Создаю очередь с приоритетом(шаблонный класс) с типом данных Job....

Очередь с приоритетом - C++
Доброго времени суток, дорогие программисты, вот сдаю экзамены, попался такой вопрос &quot;Очередь с приоритетом. Основные операции для работы с...

Очередь с приоритетом - C++
есть очередь #include &lt;iostream&gt; #include &lt;queue&gt; using namespace std; int main() { priority_queue&lt;float&gt; q; ...

Очередь с приоритетом - C++
Разработать функции работы с приоритетной очередью. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из старших...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.