Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
10.12.2013
Размер:
12.27 Кб
Скачать
program My_Curse;
uses dos,graph,crt;
type group=record
Group:string[30];
Style:string[30];
Country:string[30];
Albums:1..15;
RLabel:string[30];
Rating:1..5;
end;

const t:array[1..7] of string[15]=('„®ЎлўЁвм ЈагЇЇг','Џа®б¬®ва Ў §л','Џ®ЁбЄ ЈагЇЇл',
'“¤ «Ёвм ЈагЇЇг','ђҐ¤ ЄвЁа®ў ­ЁҐ ¤ ­­ле','‘®авЁа®ўЄ ',
'‚л室 Ё§ Їа®Ја ¬¬л');
var Reg : Registers;
f:file of group;
a:array[1..1000] of ^group;
gd,gm:integer;
i,y,xm,ym:integer;

procedure MoveMouse(var X, Y: Integer);
begin
repeat
Reg.AX:=$05;
Reg.BX:=$00;
Intr($33,Reg);
until Reg.BX = 1;
X:=Reg.CX;
Y:=Reg.DX;
end;
procedure ShowCursor;
begin
Reg.AX:=$01;
Intr($33, Reg);
end;
procedure CloseCursor;
begin
Reg.AX:=$02;
Intr($33, Reg);
end;
procedure setmouserange(x1,y1,x2,y2:integer);
begin
x1:=x1*2;
x2:=x2*2;
Reg.ax:=$07;
Reg.cx:=x1;
Reg.dx:=x2;
intr($33,Reg);
Reg.ax:=$08;
Reg.cx:=y1;
Reg.dx:=y2;
intr($33,Reg);
end;

procedure swap(var a,b:group);
var c:group;
begin c:=a; a:=b; b:=c;
end;

function ravno(s,t:string):boolean;
var i:integer;
begin ravno:=true;
for i:=1 to length(s) do
if s[i]<>t[i] then ravno:=false
end;

procedure vvod;
var i,j,n:integer;ch:char;
Begin
closegraph;
writeln('********************************');
writeln('*„®Ўлў«Ґ­ЁҐ ­®ў®© ЈагЇЇл ў Ў §г*');
writeln('********************************');
writeln;

reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;

repeat
inc(i);
new(a[i]);
write('Ќ §ў ­ЁҐ: ');
readln(a[i]^.group);
write('‘вЁ«м: ');
readln(a[i]^.style);
write('‘ва ­ : ');
readln(a[i]^.country);
write('Љ®«ЁзҐбў®  «мЎ®¬®ў: ');
readln(a[i]^.albums);
write('‹Ґ©Ў«: ');
readln(a[i]^.Rlabel);
write('ђҐ©вЁ­Ј: ');
readln(a[i]^.Rating);

writeln;
write('‚ўҐбвЁ ҐйҐ? (y/n): ');
readln(ch);
until ch='n';
n:=i;

for j:=1 to n do
for i:=1 to n-j do
if a[i]^.group > a[i+1]^.group then swap(a[i]^,a[i+1]^);

rewrite(f);
for i:=1 to n do write(f,a[i]^);
close(f);
End;
procedure vew;
var i,n:integer;ch:char;
Begin
closegraph;
writeln('***************');
writeln('*Џа®б¬®ва Ў §л*');
writeln('***************');
writeln;

reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
i:=0;
repeat
inc(i);
writeln('Ќ §ў ­ЁҐ: ',a[i]^.group);
writeln('‘вЁ«м: ',a[i]^.style);
writeln('‘ва ­ : ',a[i]^.country);
writeln('Љ®«ЁзҐбвў®  «мЎ®¬®ў: ',a[i]^.albums);
writeln('‹Ґ©Ў«: ',a[i]^.Rlabel);
writeln('ђҐ©вЁ­Ј: ',a[i]^.Rating);

writeln;
if i<>n then begin
write('Ї®Є § вм б«Ґ¤гойго? (y/n): ');
readln(ch);end
else ch:='n';
writeln;
until (ch='n');
Write('Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг ¤«п ўл室  ў Ј« ў­®Ґ ¬Ґ­о');
readln;
End;
procedure poisk;
var s:string; i,n:integer; ch:char;
Begin
closegraph;
writeln('**************************');
writeln('*Џ®ЁбЄ ЈагЇЇл Ї® ­ §ў ­Ёо*');
writeln('**************************');
writeln('ЏаЁ¬Ґз ­ЁҐ: Ї® ўў®¤Ґ ­ §ў ­Ёп ЁбЄ®¬®© ЈагЇЇл, ўў®¤вҐ Є ¦¤®Ґ ®в¤Ґ«м­®Ґ б«®ў® б § Ј« ў­®© ЈагЇЇл');
writeln;

reset(f);
i:=0;
while not eof(f) do
begin

inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;

repeat
writeln;
write('‚ўҐ¤ЁвҐ ­ §ў ­ЁҐ ЈагЇЇл: ');
readln(s);
writeln;
i:=0;
repeat
inc(i);
until ravno(s,a[i]^.group) or (i=n);
if not ravno(s,a[i]^.group) then writeln('’ Є®© ЈагЇЇл ў Ў §Ґ ­Ґв');
if ravno(s,a[i]^.group) then
begin
writeln('Ќ §ў ­ЁҐ: ',a[i]^.group);
writeln('‘вЁ«м: ',a[i]^.style);
writeln('‘ва ­ : ',a[i]^.country);
writeln('Љ®«ЁзҐбвў®  «мЎ®¬®ў: ',a[i]^.albums);
writeln('‹Ґ©Ў«: ',a[i]^.Rlabel);
writeln('ђҐ©вЁ­Ј: ',a[i]^.rating);

end;
writeln;
write('€бЄ вм ҐйҐ? (y/n): ');
readln(ch)
until (ch='n')
End;
procedure del;
var s:string; i,j,n:integer; ch:char;
Begin
closegraph;

writeln('************************');
writeln('*“¤ «Ёвм ЈагЇЇг Ё§ Ў §л*');
writeln('************************');
writeln('ЏаЁ¬Ґз ­ЁҐ: Ї® ўў®¤Ґ ­ §ў ­Ёп г¤ «пҐ¬®© ЈагЇЇл, ўў®¤вҐ Є ¦¤®Ґ ®в¤Ґ«м­®Ґ б«®ў® б § Ј« ў­®© ЈагЇЇл');
writeln;

reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
repeat
write('‚ўҐ¤ЁвҐ ­ §ў ­ЁҐ г¤ «пҐ¬®© ЈагЇЇл: ');
readln(s);
writeln;
i:=0;
repeat
inc(i);
until ravno(s,a[i]^.group) or (i=n);
if not ravno(s,a[i]^.group) then writeln('’ Є®© ЈагЇЇл ­Ґв');
if ravno(s,a[i]^.group) then
begin
writeln('Ќ §ў ­ЁҐ: ',a[i]^.group);
writeln('‘вЁ«м: ',a[i]^.style);
writeln('‘ва ­ : ',a[i]^.country);
writeln('Љ®«ЁзҐбвў®  «мЎ®¬®ў: ',a[i]^.albums);
writeln('‹Ґ©Ў«: ',a[i]^.Rlabel);
writeln('ђҐ©вЁ­Ј: ',a[i]^.rating);

writeln;
write('“¤ «Ёвм? (y/n): ');
readln(ch);
if ch='y' then
begin
for j:=i to n-1 do
a[j]^:=a[j+1]^;
if j=n then
Dispose(a[j]);
end;
end;
writeln;
write('“¤ «Ёвм ҐйҐ? (y/n): ');
readln(ch)
until ch='n';
rewrite(f);
for i:=1 to n-1 do write(f,a[i]^);
close(f)
End;
procedure edit;
var s:string; i,j,n,kod:integer; ch:char;
p:array[1..8] of string[30];
Begin
closegraph;
writeln('***********************');
writeln('*ђҐ¤ ЄвЁа®ў ­ЁҐ ¤ ­­ле*');
writeln('***********************');
writeln('ЏаЁ¬Ґз ­ЁҐ: Ї® ўў®¤Ґ ­ §ў ­Ёп । ЄвЁа㥬®© ЈагЇЇл, ўў®¤вҐ Є ¦¤®Ґ ®в¤Ґ«м­®Ґ б«®ў® б § Ј« ў­®© ЈагЇЇл');
writeln;

reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
repeat
writeln;
write('‚ўҐ¤ЁвҐ ­ §ў ­ЁҐ ЈагЇЇл: ');
readln(s);
writeln;
i:=0;
repeat
inc(i);
until ravno(s,a[i]^.group) or (i=n);
if not ravno(s,a[i]^.group) then writeln('’ Є®© ЈагЇЇл ў Ў §Ґ ­Ґв');
if ravno(s,a[i]^.group) then
begin
writeln('Ќ §ў ­ЁҐ: ',a[i]^.group);
write('‚ўҐ¤ЁҐ ­®ўго Ё­д®а¬ жЁо Ё«Ё ­ ¦¬ЁвҐ <ENTER>: ');
readln(p[1]);
writeln('‘вЁ«м: ',a[i]^.style);
write('‚ўҐ¤ЁҐ ­®ўго Ё­д®а¬ жЁо Ё«Ё ­ ¦¬ЁвҐ <ENTER>: ');
readln(p[2]);
writeln('‘ва ­ : ',a[i]^.country);
write('‚ўҐ¤ЁҐ ­®ўго Ё­д®а¬ жЁо Ё«Ё ­ ¦¬ЁвҐ <ENTER>: ');
readln(p[3]);
writeln('Љ®«ЁзҐбвў®  «мЎ®¬®ў: ',a[i]^.albums);
write('‚ўҐ¤ЁҐ ­®ўго Ё­д®а¬ жЁо Ё«Ё ­ ¦¬ЁвҐ <ENTER>: ');
readln(p[4]);
writeln('‹Ґ©Ў«: ',a[i]^.Rlabel);
write('‚ўҐ¤ЁҐ ­®ўго Ё­д®а¬ жЁо Ё«Ё ­ ¦¬ЁвҐ <ENTER>: ');
readln(p[5]);
writeln('ђҐ©вЁ­Ј: ',a[i]^.Rating);
write('‚ўҐ¤ЁҐ ­®ўго Ё­д®а¬ жЁо Ё«Ё ­ ¦¬ЁвҐ <ENTER>: ');
readln(p[6]);

writeln;
write('‘®еа ­Ёвм Ё§¬Ё­Ґ­Ёп? (y/n): ');
readln(ch);
if ch='y' then
begin
if p[1]<>'' then a[i]^.group:=p[1];
if (p[2]<>'') then a[i]^.style:=p[2];
if p[3]<>'' then a[i]^.country:=p[3];
if (p[4]<>'') and ((p[4,1] in ['1'..'9']) or ((p[4,1]='1') and (p[4,2] in ['0'..'5']))) then
val(p[4],a[i]^.albums,kod);
if p[5]<>'' then a[i]^.Rlabel:=p[5];
if (p[6]<>'') and (p[6,1] in ['1'..'5']) then val(p[6,1],a[i]^.rating,kod);
end;
end;
writeln;
write('ђҐ¤ ЄвЁа®ў вм ҐйҐ? (y/n): ');
readln(ch)
until ch='n';

for j:=1 to n do
for i:=1 to n-j do
if a[i]^.group>a[i+1]^.group then swap(a[i]^,a[i+1]^);

rewrite(f);
for i:=1 to n do write(f,a[i]^);
close(f)

End;
procedure cort;
var i,j,n:integer; q:group; s:byte; ok:boolean;
Begin
closegraph;
writeln('******************************');
writeln('*‘®авЁа®ўЄ  Ї® § ¤ ­­®¬г Ї®«о*');
writeln('******************************');
writeln;
write('‚ўҐ¤вЁвҐ Є«оз б®авЁа®ўЄЁ (‘вЁ«м-1, ‘ва ­ -2, ‹Ґ©Ў«-3, ђҐ©вЁ­Ј-4): ');

readln(s);
reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
for i:=n-1 downto 1 do
for j:=1 to i do
begin
case s of
1:ok:=a[j]^.style>a[j+1]^.style;
2:ok:=a[j]^.country>a[j+1]^.country;
3:ok:=a[j]^.Rlabel>a[j+1]^.Rlabel;
4:ok:=a[j]^.Rating>a[j+1]^.Rating;
end;
if ok then begin
q:=a[j]^;
new(a[j]);a[j]^:=a[j+1]^;
new(a[j+1]);a[j+1]^:=q;
end;end;
rewrite(f);
for i:=1 to n do write(f,a[i]^);


close(f);
End;
BEGIN

textcolor(15);
Writeln(' Љгаб®ў п а Ў®в  ');
Writeln(' Џ® Ё­д®а¬ вЁЄҐ ');
Writeln(' ‘в㤥­в  ЈагЇЇл Ђ’-07-1 ');
Writeln(' ќ«ҐЄва®вҐе­ЁзҐбЄ®Ј® д Єг«мвҐв  Џѓ’“ ');
textcolor(4);
Writeln(' Њ «мЄ®ў  ‚пзҐб« ў  ‘ҐаЈҐҐўЁз  ');
textcolor(15);
Writeln;
Writeln(' ’Ґ¬  Єгаб ў®© а Ў®вл: ');
textcolor(4);
Writeln(' Ѓ §  ¤ ­­ле ');
textcolor(15);
Writeln;Writeln;Writeln;Writeln;
writeln(' Џа®Ја ¬¬ : ROCK BASE vol. 1.0 ');
Writeln;Writeln;Writeln;Writeln;Writeln;Writeln;Writeln;Writeln;Writeln;
textcolor(14);
Write(' „«п ­ з «  а Ў®вл ­ ¦¬ЁвҐ «оЎго Є« ўЁиг ');
textcolor(15);
readkey;

gd:=0;
assign(f,'data.pas');
setmouserange(0,0,320,480);
gd:=0;
repeat
initgraph(gd,gm,'');
cleardevice;
rectangle(0,0,150,50);
floodfill(1,1,15);
setcolor(0);
outtextXY(5,20,'ROCK BASE vol. 1.0');
setcolor(15);



y:=40;
for i:=1 to 7 do
begin
rectangle(220,y,420,y+40);
outtextxy(220+(200-length(t[i])*8) div 2,y+20,t[i]);
y:=y+60
end;

showcursor;
movemouse(xm,ym);
closecursor;
if (ym>40) and (ym<80) then vvod;
if (ym>100) and (ym<140) then vew;
if (ym>160) and (ym<200) then poisk;
if (ym>220) and (ym<260) then del;
if (ym>280) and (ym<320) then edit;
if (ym>340) and (ym<380) then cort;
until (ym>400) and (ym<440);

closegraph;
END.