Скачиваний:
285
Добавлен:
04.03.2014
Размер:
6.27 Кб
Скачать

{      **********************************************************
       *                 „€ЌЂЊ€—…‘ЉЂџ ЏЂЊџ’њ.                   *
       *                      “ЉЂ‡Ђ’…‹€.                        *
       *                    " 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;
  item:=head;
While head <> nil do Del_First(head); {----------- Memory Free --------------}

READLN;
END.












Соседние файлы в папке Динамической памяти и указатели