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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 20:48   #1
novi4ok_Delphi
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 18
По умолчанию не могу найти ошибку!

В общем мне нужно удалить последний отрицательный элемент очереди,но как-только находится отриц.элемент,удаляются все равные ему+этот элемент.никак не могу найти ошибку,помогите разобраться!
Вложения
Тип файла: rar Очередь.rar (365.2 Кб, 14 просмотров)

Последний раз редактировалось novi4ok_Delphi; 22.04.2010 в 22:52.
novi4ok_Delphi вне форума Ответить с цитированием
Старый 22.04.2010, 23:52   #2
sanela
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 19
По умолчанию

Я бы не сказал это ошибкой. Выложи сюда код программы. Ты сам можешь её исправить так, как это ошибка не в программе, а в алгоритме. Для начала составь блок-схему своей задачи, а потом по коду программы и сравни.
sanela вне форума Ответить с цитированием
Старый 23.04.2010, 00:00   #3
novi4ok_Delphi
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 18
По умолчанию

мой косяк где-то при создании новой очереди!!! В общем вот!
Код:
procedure Draw(a : TQueue);
var
  i: Integer;
begin
  i := 0;
  FormMain.InStringGrid.ColCount := 1;
  while a.Head <> Nil do begin
    FormMain.InStringGrid.Cells[i, 0] := IntToStr(a.Head.Info);
    FormMain.InStringGrid.ColCount := FormMain.InStringGrid.ColCount + 1;
    a.Head := a.Head.Next;
    Inc(i);
  end;
  FormMain.InStringGrid.ColCount := FormMain.InStringGrid.ColCount - 1;
end;

function QueueIsEmpty(var a: TQueue): Boolean;
// проверка на пустоту
begin
  Result := a.Head = Nil
end;

procedure InQueue(var a: TQueue; x: Integer);
var
  p: PNode;
begin
  New(p);
  with p^ do begin
    Info := x;
    Next := Nil
  end;
  if QueueIsEmpty(a) then // если очередь пуста
  with a do begin         // создаем первый элемент очереди
    Head := p;
    Tail := p
  end
  else                    // добавляем элемент в конец очереди
  with a do begin
    Tail^.Next := p;
    Tail := p
  end;
end;

procedure InicQueue(var a: TQueue);  //инициализация очереди
begin
  a.Head := Nil;
  a.Tail := Nil;
end;

procedure NewQueue;
var
  p, qnew: TQueue;
  i: Integer;
begin
  p := q;
  InicQueue(qnew);
  while p.Head <> Nil do
  begin
    if p.Head.Info < 0 then begin
      i := p.Head.Info;
      p.Head := p.Head.Next;
    end
    else
      p.Head := p.Head.Next;
  end;
  p := q;
  while p.Head <> Nil do
    if p.Head.Info <> i then begin
      InQueue(qnew, p.Head.Info);
      p.Head := p.Head.Next;
    end
    else begin
      p.Head := p.Head.Next;
      Break;
    end;
  Draw(qnew);
  FormMain.ResultLabel.Caption:= 'последний отрицательный элемент =  ' + IntToStr(i);
end;
novi4ok_Delphi вне форума Ответить с цитированием
Старый 23.04.2010, 10:47   #4
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию подробнее

подробнее код комментируй ) какой цикл что делает )) так всем легче будет ) а может и сам поймёшь где ошибся))
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 24.04.2010, 21:46   #5
novi4ok_Delphi
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 18
По умолчанию

я ставил отладчик, в общем ошибка в procedure NewQueue,она не моя и исправить ошибку не получается,вроде логика правильная,но где подвох,не понимаю...
novi4ok_Delphi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти ошибку maxistudent Общие вопросы C/C++ 6 29.04.2010 20:52
Не могу найти ошибку С\С++ Айдар Помощь студентам 1 08.03.2010 18:16
Не могу найти ошибку Tesmont Помощь студентам 2 20.05.2009 21:00
Не могу найти ошибку . KVANTOM Общие вопросы Delphi 2 08.01.2009 17:15