1

Тема: Черга

16.    Створити чергу дійсних чисел, в яку спочатку ввести від’ємні числа, потім – додатні. Видалити з черги всі від’ємні числа. Вивести оновлену чергу. Видалити чергу.

. . .{Опис вузла черги дійсних чисел}
uses  CRT;
type
 n=^uzel;
uzel=record
         x: real;
         next: n;
         end;
var
first: n; {Посилання на перший елемент черги}
last: n; {Посилання на останній елемент черги}
uku: n;     {Посилання на довільний вузол черги}
c: char;

begin
{Введення першого елементу в чергу}

new(first);   last:=first;   first^.next:=nil;
writeln(‘Введите первый елемент’);  readln(first^.x);
writeln(‘Хотите продолжить ввод’);  readln(c);

{Формування черги в циклі дозаписом елемента в «хвіст» черги}

while c=’y’ do
    begin
        new(uku);  last^.next:=uku;  
        writeln(‘Введите очередной елемент’);  readln(uku^.x);
        last:=uku;
        writeln(‘Хотите продолжать?’);  readln(c);
    end;
end.

З вводом  черги  розібрався допоможіть  з  рештою  завдання

2 Востаннє редагувалося koala (26.10.2013 09:30:55)

Re: Черга

Не зрозумів завдання. Ввести спочатку від'ємні - це інструкція користувачеві чи опис дій програми? В другому випадку ви не розібралися з вводом.
А так - все просто:

cur:=first;
while cur<>nil do begin
  {обробляємо поточний елемент черги}
  cur:=cur^.next;{перехід на наступний елемент}
end;

3 Востаннє редагувалося reywwe95 (26.10.2013 09:20:23)

Re: Черга

за  ввод   спасибі   допоможіть  з виводом  і  видаляти елменти як  в    звичайному  списку ??? cur що  за  змінна  і навіщо ??

4

Re: Черга

Та щоб його... Спати мені треба більше... у вас же має бути черга, а не список!
Забудьте, що я писав - то для списку порада. А у вас черга. Для роботи з чергою вам потрібні дві функції - поставити в чергу і дістати з черги, причому з різних кінців; і працювати слід тільки і виключно із цими двома функціями (можна додати функцію "вивести чергу" для зручності). Щось типу

procedure add(x:real);
var elem:n;{назву краще змінити - на puzel, наприклад}
begin
  new(elem);
  elem^.next:=first;
  elem^.x:=x;
  first:=elem;
end;

і т.д.

5

Re: Черга

щось  я  зовсім нічого  не розумію  (

6

Re: Черга

Черга - це спеціально організована структура, з якою можна робити тільки 2 операції: додати елемент в один кінець і видалити з іншого. Одну операцію я вже описав; тепер опишіть другу і працюйте тільки з ними, в цьому завдання і полягає.

7

Re: Черга

Раджу трохи попрацювати з вказівниками і будете краще розуміти як влаштовані різні структури даних, особливо стандартні колекції.
Черга виглядає ось так:
http://procpp.ru/wp-content/uploads/theory-c-cpp/saod/queue/queue_1.png
Причому є вказівник на 1-й елемент черги.

Ще є різні типи черг. Тей же Вірт в своїй книзі все добре розписав.

8

Re: Черга

я  розумію  теорію  в  мене  з   кодом не  складається

9

Re: Черга

Що саме "не складається" - комп'ютер не вмикається чи на клавіатурі Ctrl затиснувся? Ми не телепати. Покажіть, що вийшло (якщо все, що вийшло - те, що на початку, то поясніть, яким чином там реалізовані ці дві операції, чи хоча б як ви їх намагалися реалізувати).

Подякували: Torbins1

10

Re: Черга

reywwe95
Киньте сюди свій код "решти завдання", навіть якщо він на 100% неправильний.