Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2017, 17:22   #1
Petrenko.Vital2017
Новичок
Джуниор
 
Регистрация: 28.05.2017
Сообщений: 2
По умолчанию Очереди на delphi

Есть задача: создать две очереди на delphi и проверить их равенство. Т.е. элементы одной очереди должны быть равны элементам другой очереди.
Сама программа у меня есть и она работает. Но есть проблема: проверка на равенство производится при помощи кнопки на форме.
И если при неравных очередях нажать на эту кнопку, то выводится сообщение что очереди не равны. Но если на эту же кнопку нажать второй раз при неравных очередях, то выводится сообщение, что очереди равны, т.е. неправильно. Вы можете посмотреть программу и написать, что не так?

Сама программа прилагается?
Вложения
Тип файла: rar Очереди.rar (186.3 Кб, 13 просмотров)
Petrenko.Vital2017 вне форума Ответить с цитированием
Старый 28.05.2017, 18:14   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Потому что при проверке очередей элемент достаётся из очереди в QueuePop и удаляется.
При повторном нажатии очереди уже не существуют. Правда, если одна из очередей длиннее, то часть её остаётся.

Нужна процедура просмотра подобная QueuePop без удаления и не изменяющая параметры очередей, либо просто заново составить очередь
Код:
procedure TForm1.btn3Click(Sender: TObject);
var i: integer;
begin
   if (checkRavn(FQueue,SQueue)) then
     lbl1.Caption:= 'Ответ: ' + 'очереди равны.'
     else
     lbl1.Caption:= 'Ответ: ' + 'очереди не равны.';

  QueueFree(FQueue);
  QueueFree(SQueue);

  for i := 0 to memo1.Lines.Count-1 do
    QueuePush(FQueue, memo1.Lines.Strings[i]); //Добавляем элемент в конец очереди.

  for i := 0 to mmo1.Lines.Count-1 do
    QueuePush(SQueue, mmo1.Lines.Strings[i]); //Добавляем элемент в конец очереди.
end;
eoln вне форума Ответить с цитированием
Старый 28.05.2017, 19:03   #3
Petrenko.Vital2017
Новичок
Джуниор
 
Регистрация: 28.05.2017
Сообщений: 2
По умолчанию

eoln, огромное спасибо за помощь! Теперь программа работает правильно.
Petrenko.Vital2017 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С заданной целочисленной очереди организовать две: первая содержит все положительные элементы данной очереди, вторая - отрицательн wowan30002 Общие вопросы C/C++ 0 20.11.2012 17:39
Реализация очереди через массив (Delphi) wertret Помощь студентам 2 24.04.2012 02:25
Реализация контейнера на базе очереди. Delphi medvedeva Помощь студентам 0 26.06.2011 13:36
Переворот очереди (Delphi) kant1288 Помощь студентам 8 26.03.2009 21:38