Добавил:
Источник:
Uman
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:01 семестр / К экзамену-зачёту / Все задачи с экзамена в формате PAS / Динамической памяти и указатели / AII4MEM
.PAS
{ **********************************************************
* „€ЌЂЊ€—…‘ЉЂџ ЏЂЊџ’њ. *
* “ЉЂ‡Ђ’…‹€. *
* " BEST CARS " (version2.0) *
********************************************************** }
PROGRAM Laba4;
USES CRT;
TYPE
KAT=RECORD
MARKA,
COLOR:STRING[25];
GOD:INTEGER;
COAST,
PROBEG:REAL;
END;
LIST=^BCAR;
BCAR=RECORD
PRICE:KAT;
NEXT:LIST;
END;
{------------------------„‹џ ђ€‘Ћ‚ЂЌ€џ ЋЉЋЌ ‘ ђЂЊЉЋ‰------------------------}
PROCEDURE M_WINDOW(STARTX,STARTY,FINISHX,FINISHY,ATR:BYTE);
BEGIN
WINDOW(StartX,StartY,FinishX,FinishY);
TextAttr:=ATR;
CLRSCR;
END;
{----------------------------------------------------------------------------}
PROCEDURE RAMKA(X1,Y1,X2,Y2:INTEGER);
CONST
LU=#201; RU=#187;
LD=#200; RD=#188;
HH=#205; V=#186;
VAR K:INTEGER;
BEGIN
clrscr;
write(lu);
for k:=x1+1 to x2-1 do write(hh);
write(ru);
for k:=y1+1 to y2-1 do
begin
gotoxy(1,k-y1+1);
write(v);
gotoxy(x2-x1+1,whereY);
write(v);
end;
write(ld);
window(x1,y1,x2,y2+1);
gotoxy(2,y2-y1+1);
for k:=x1+1 to x2-1 do write(hh);
write(rd);
window(x1+1,y1+1,x2-1,y2-1);
end;
{----------------------------------------------------------------------------}
PROCEDURE BEEP(SOUN:INTEGER);
BEGIN
SOUND(SOUN);
DELAY(100);
NOSOUND;
END;
{----------------------€Ќ€–€Ђ‹€‡Ђ–€џ ‘Џ€‘ЉЂ----------------------------------}
PROCEDURE INIT_LIST(VAR P:LIST);
BEGIN
P:=NIL;
END;
{---------------„ЋЃЂ‚‹…Ќ€… ќ‹…Њ…Ќ’Ђ ‚ ѓЋ‹Ћ‚“ ‘Џ€‘ЉЂ-----------------------}
PROCEDURE ADD_FIRST(D:KAT; VAR P:LIST);
VAR
Q:LIST;
BEGIN
NEW(Q);
Q^.PRICE:=D;
Q^.NEXT:=P;
P:=Q;
END;
{-----------------‚‘’Ђ‚ЉЂ ќ‹…Њ…Ќ’Ђ ЏЋ‘‹… ’…Љ“™…ѓЋ-------------------------}
PROCEDURE INS_AFTER(D:KAT; VAR P:LIST);
VAR
Q:LIST;
BEGIN
NEW(Q);
Q^.PRICE:=D;
Q^.NEXT:=P^.NEXT;
P^.NEXT:=Q;
END;
{-----------------‚‘’Ђ‚ЉЂ Џ…ђ…„ ’…Љ“™€Њ ќ‹…Њ…Ќ’ЋЊ-------------------------}
PROCEDURE INS_BEFORE(D:KAT; VAR P:LIST);
VAR
Q:LIST;
BEGIN
NEW(Q);
Q^.NEXT:=P^.NEXT;
P^.NEXT:=Q;
Q^.PRICE:=P^.PRICE;
P^.PRICE:=D;
P:=P^.NEXT;
END;
{-----------------“„Ђ‹…Ќ€… ќ‹…Њ…Ќ’Ђ ЏЋ‘‹… ’…Љ“™…ѓЋ------------------------}
PROCEDURE DEL_AFTER(VAR P:LIST);
VAR
Q:LIST;
BEGIN
Q:=P^.NEXT;
P^.NEXT:=Q^.NEXT;
DISPOSE(Q);
END;
{--------------------“„Ђ‹…Ќ€… Џ…ђ‚ЋѓЋ ќ‹…Њ…Ќ’Ђ----------------------------}
PROCEDURE DEL_FIRST(VAR P:LIST);
VAR
Q:LIST;
BEGIN
Q:=P;
P:=P^.NEXT;
DISPOSE(Q);
END;
{------------------—’…Ќ€… € ‚›‚Ћ„ ‘Џ€‘ЉЂ ЌЂ ќЉђЂЌ-------------------------}
PROCEDURE WRITE_PRICE(VAR P:LIST);
VAR
D:KAT;
BEGIN
CLRSCR;
D:=P^.PRICE;
WRITELN;
WRITELN('ЌЂ‡‚ЂЌ€… ',D.MARKA:15);
WRITELN('ѓЋ„ ‚›Џ“‘ЉЂ ',D.GOD:5);
WRITELN('–…ЌЂ (ў “/…) ',D.COAST:5:1,'$');
WRITELN('–‚…’ ',D.COLOR:10);
P:=P^.NEXT;
END;
{------------------------”“ЌЉ–€€ ЉЂ’Ђ‹ЋѓЂ---------------------------------}
{PROCEDURE ALFAVIT(VAR P:LIST);
VAR
Q:LIST;
D:KAT;
BEGIN
WHILE P<>NIL DO
BEGIN
Q:=P^.NEXT;
WHILE Q<>NIL DO
BEGIN
IF P^.PRICE.MARKA > Q^.PRICE.MARKA
THEN
BEGIN
D:=Q^.PRICE;
Q^.PRICE:=P^.PRICE;
P^.PRICE:=D;
END;
Q:=Q^.NEXT;
END;
P:=P^.NEXT;
END;
END; }
{-----------------------Ћ‘ЌЋ‚ЌЂџ ЏђЋѓђЂЊЊЂ--------------------------------}
VAR
M_PRICE:KAT;
HEAD,ITEM,R:LIST;
C:BYTE;
FLAG:CHAR;
FYEAR,FUNC:INTEGER;
BEGIN
TEXTBACKGROUND(1);
CLRSCR;
M_WINDOW(20,1,60,5,$21);
RAMKA(20,1,60,5);
WRITELN('Ђ‚’ЋЊЋЃ€‹њЌ›‰ ЉЂ’Ђ‹Ћѓ !');
INIT_LIST(HEAD);
M_WINDOW(1,6,80,24,$41);
RAMKA(1,6,80,24);
REPEAT
CLRSCR;
WRITELN('‡ЂЏЋ‹Ќџ…Њ ЉЂ’Ђ‹Ћѓ : ');
WRITELN;
WRITE('‚‚…„€’… ЌЂ‡‚ЂЌ€… ЊЂ€Ќ› : '); READLN(M_PRICE.MARKA);
WRITE('‚…„€’… ѓЋ„ ‚›Џ“‘ЉЂ ЊЂ€Ќ› : '); READLN(M_PRICE.GOD);
WRITE('‘ЉЋ‹њЉЋ ‘’Ћ€’ ЊЂ€ЌЂ ? : '); READLN(M_PRICE.COAST);
WRITE('ЉЂЉЋѓЋ –‚…’Ђ ЊЂ€ЌЂ ? : '); READLN(M_PRICE.COLOR);
IF HEAD=NIL
THEN
BEGIN
ADD_FIRST(M_PRICE,HEAD);
ITEM:=HEAD;
END
ELSE
BEGIN
INS_AFTER(M_PRICE,ITEM);
ITEM:=ITEM^.NEXT;
END;
WRITELN;
WRITELN('ESC - ЋЉЋЌ—ЂЌ€… ”ЋђЊ€ђЋ‚ЂЌ€џ ЉЂ’Ђ‹ЋѓЂ');
WRITELN('ANY_KEY - ЏђЋ„Ћ‹†…Ќ€… ”ЋђЊ€ђЋ‚ЂЌ€џ ЉЂ’Ђ‹ЋѓЂ');
FLAG:=READKEY;
UNTIL FLAG=#27;
{---ЏђЋ‘ЊЋ’ђ.----T…Љ“™€‰ “ЉЂ‡Ђ’…‹њ “‘’ЂЌЋ‚‹…Ќ ЌЂ ѓЋ‹Ћ‚“.-----------------}
C:=0;
WRITELN;
ITEM:=HEAD;
WHILE ITEM<>NIL DO
BEGIN
WRITE_PRICE(ITEM);
END;
REPEAT
ITEM:=HEAD;
WRITELN(' ”“ЌЉ–€€ ЉЂ’Ђ‹ЋѓЂ : ');
WRITELN('1-“„Ђ‹…Ќ€… ЏЋ ѓЋ„“ ‚›Џ“‘ЉЂ;');
READLN(FUNC);
CASE FUNC OF
1 : BEGIN
Write('“„Ђ‹€’њ ЊЂ€Ќ› ѓЋ„ ‚›Џ“‘ЉЂ ЉЋ’Ћђ›• Ќ€†… ... ');
READLN(FYEAR);
ITEM:=HEAD;
WHILE ITEM<>NIL DO
IF ITEM^.PRICE.GOD>FYEAR THEN
BEGIN
R:=ITEM;
ITEM:=ITEM^.NEXT;
END
ELSE
BEGIN
IF ITEM=HEAD THEN
BEGIN
DEL_FIRST(HEAD);
ITEM:=HEAD;
END
ELSE BEGIN DEL_AFTER(R); ITEM:=R^.NEXT; END;
while ITEM<>NIL DO
WRITE_PRICE(ITEM);
END;
END;
END;
UNTIL FUNC=6;
READLN;
END.
Соседние файлы в папке Динамической памяти и указатели