Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Turbo Pascal] Очереди 
V
    Опции темы
Dower
Дата 19.4.2011, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 17.1.2010

Репутация: нет
Всего: нет



Помогите решить задачку.

Дан набор из 10 чисел. Создать две очереди: первая должна содержать все нечетные, а вторая все четные числа из данного набора (порядок чисел в каждой очереди должен совпадать с порядком чисел в исходном наборе). Вывести указатели на начало и конец первой, а затем второй очереди (одна из очередей может оказаться пустой тогда вывести для нее две константы NIL).

PM MAIL   Вверх
v4v4n
Дата 23.4.2011, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 26.9.2008

Репутация: 2
Всего: 4



Код

Type
    TData=integer;
    PElem=^TElem;
    TElem=record
       Data : TData;
       Next : PElem;
    end;
function AddAfter(x:TData;var E:PElem):PElem;
var NewElem : PElem;
begin
    new(NewElem);
    NewElem^.Data:=x;
    if E<>nil then begin
       NewElem^.Next:=E^.Next;
       E^.Next:=NewElem;
    end else NewElem^.Next:=nil;
    AddAfter:=NewElem;
end;
procedure DelAll(var E:PElem);
var Elem:PElem;
begin
    while E<>nil do begin
        Elem:=E^.Next;
        Dispose(E);
        E:=Elem;
    end;
end;
procedure List(E:PElem);
var Elem:PElem;
begin
    Elem:=E;
    while Elem<>nil do begin
        Write(Elem^.Data:4);
        Elem:=Elem^.Next;
    end;
    if E=nil then write('nil':4);
end;
const n=10;
var A,B,C,FirstA,FirstB,FirstC : PElem;
    i:integer;
BEGIN
    A:=nil; FirstA:=nil;
    for i:=1 to n do begin
        A:=AddAfter(random(90)+10,A);
        if FirstA=nil then FirstA:=A;
    end;
    A:=FirstA; B:=nil; C:=nil; FirstB:=nil; FirstC:=nil;
    While A<>nil do begin
        if A^.Data mod 2 =0 then begin
           B:=AddAfter(A^.Data,B);
           if FirstB=nil then FirstB:=B;
        end
        else begin
           C:=AddAfter(A^.Data,C);
           if FirstC=nil then FirstC:=C;
        end;
        A:=A^.Next;
    end;
    Write(#13#10'A:'); List(FirstA);
    Write(#13#10'B:'); List(FirstB);
    Write(#13#10'C:'); List(FirstC);
    DelAll(FirstA); DelAll(FirstB); DelAll(FirstC);
END.

PM MAIL   Вверх
Dower
Дата 23.4.2011, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 17.1.2010

Репутация: нет
Всего: нет



Спасибо v4v4n
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0383 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.