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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 17:05   #1
bwitcher
Форумчанин
 
Регистрация: 09.06.2010
Сообщений: 112
По умолчанию блок-схема по спискам

привет! ребят, вы не поможете с блок-схемой?
Написать функцию, которая использует исходный список L и создает два новых списка L1 и L2. L1 содержит нечетные числа, а L2 – четные.
Код:
program Project1;
type
TData = Integer;
TPElem = ^TElem;
TElem = record
Data : TData;
PNext : TPElem;
end;
TList = record
PFirst : TPElem;
PLast : TPElem;
end;
procedure ListFree(var aList : TList);
var
PNext, PDel : TPElem;
begin
if aList.PFirst = nil then Exit;
PNext := aList.PFirst;
while PNext <> nil do begin
PDel := PNext;
PNext := PNext^.PNext;
Dispose (P Del);
end;
aList.PFirst := nil;
aList.PLast := nil;
end;
procedure AddL(var aList : TList; const aPElem : TPElem);
begin
if aPElem = nil then Exit;
aPElem^.PNext := nil;
if aList.PFirst = nil then begin
aList.PFirst := aPElem;
aList.PLast := aPElem;
end else begin
aList.PLast^.PNext := aPElem;
aList.PLast := aPElem;
end;
end;
var
List1, List2, List3 : TList;
PElem, PNew : TPElem;
S : String;
begin
List1.PFirst := nil;
List1.PLast := nil;
List2.PFirst := nil;
List2.PLast := nil;
List3.PFirst := nil;
List3.PLast := nil;
repeat
Writeln('Задайте список целых чисел через пробел');
Writeln('и нажмите Enter:');
repeat
New(PElem);
Read(PElem^.Data);
AddL(List1, PElem);
until Eoln(Input);
Readln;
Writeln('Составлен динамический список. Элементы списка:');
PElem := List1.PFirst;
while PElem <> nil do begin
if PElem <> List1.PFirst then Write(', ');
Write(PElem^.Data);
PElem := PElem^.PNext;
end;
Writeln;
PElem := List1.PFirst;
while PElem <> nil do begin
New(PNew);
PNew^.Data := PElem^.Data;
if PElem^.Data mod 2 = 0 then
AddL(List2, PNew)
else
AddL(List3, PNew);
PElem := PElem^.PNext;
end;
Writeln('Список чётных чисел:');
PElem := List2.PFirst;
while PElem <> nil do begin
if PElem <> List2.PFirst then Write(', ');
Write(PElem^.Data);
PElem := PElem^.PNext;
end;
Writeln;
Writeln('Список нечётных чисел:');
PElem := List3.PFirst;
while PElem <> nil do begin
if PElem <> List3.PFirst then Write(', ');
Write(PElem^.Data);
PElem := PElem^.PNext;
end;
Writeln;
ListFree(List1);
ListFree(List2);
ListFree(List3);
Writeln('Списки удалены из памяти.');
Writeln('Повторить - Enter. Выход - любой символ + Enter.');
Readln(S);
until S <> '';
end.
Для процедур не нужно, уже сделал, помощь нужна с основной программой
bwitcher вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блок-схема! Olga S Помощь студентам 1 16.12.2010 11:53
Схема алгоримта (блок схема) на задачу по Паскалю LINCHAK Помощь студентам 0 22.10.2010 16:56
Блок-схема DeadAir Помощь студентам 1 29.03.2010 15:10
Блок-схема BROOKS Помощь студентам 0 07.12.2009 18:40
Блок схема алгоритма программы и схема взаимодействия модулей. Lazio Фриланс 3 02.12.2009 23:10