motmetbay
31-08-2004, 12:06
Mình có 1 chương trình xếp lịch thi đấu bóng đá nhưng viết bằng PasCal nay muốn chuyển sang ngôn ngữ ASP.Net. Bạn nào rành về ASP.Net thì giúp mình chuyển đổi ngôn ngữ dùm nhé. Cảm ơn rất nhiều. Mình đang cần gấp lắm. Ráng giúp mình với nhé các bạn.
//************************************************** ****//
program laplich;
type
data1=record
doi1,doi2:byte;
chon:boolean;
end;
mang1=array[1..190] of data1;
data2=record
doi1,doi2,vitri:byte;
end;
mang2=array[1..19] of data2;
taphop=set of 1..20;
var sodoi,sotran:byte;
trandau:mang1;
(*-- Ham tim vi tri tran dau thoa dieu kien ----------------*)
function timtrandau(doithamgia:taphop;vitri:byte):byte;
begin
while vitri<=sotran do
begin
if (trandau[vitri].chon=true) or
(trandau[vitri].doi1 in doithamgia) or
(trandau[vitri].doi2 in doithamgia) then
vitri:=vitri+1
else
begin
timtrandau:=vitri;
exit;
end;
end;
timtrandau:=vitri;
end;
(*----------------------------------------------------------------*)
procedure chontrandau(var doithamgia:taphop;var sotran1vong,vitri:byte;
var tran1vong:mang2;vttim:byte);
begin
vitri:=vttim;
doithamgia:=doithamgia+[trandau[vttim].doi1];
doithamgia:=doithamgia+[trandau[vttim].doi2];
trandau[vttim].chon:=true;
sotran1vong:=sotran1vong+1;
tran1vong[sotran1vong].doi1:=trandau[vttim].doi1;
tran1vong[sotran1vong].doi2:=trandau[vttim].doi2;
tran1vong[sotran1vong].vitri:=vttim;
end;
(*----------------------------------------------------------------*)
procedure khongchontrandau(var doithamgia:taphop;var sotran1vong,vitri:byte;
tran1vong:mang2);
begin
vitri:=tran1vong[sotran1vong].vitri;
doithamgia:=doithamgia-[trandau[vitri].doi1];
doithamgia:=doithamgia-[trandau[vitri].doi2];
trandau[vitri].chon:=false;
sotran1vong:=sotran1vong-1;
end;
(*--------------------------------------------------------------------*)
procedure xuat(tran1vong:mang2);
var temp:byte;
begin
for temp:=1 to (sodoi div 2) do
writeln(tran1vong[temp].doi1,' ',tran1vong[temp].doi2);
readln;
end;
(*--------------------------------------------------------------------*)
procedure xeplichchan;
var sovong,sotran1vong,vitri,vttim:byte;
doithamgia:taphop;
tran1vong:mang2;
begin
sovong:=1;
while sovong<sodoi do
begin
sotran1vong:=0;
doithamgia:=[];
vitri:=0;
while sotran1vong<(sodoi/2) do
begin
vttim:=timtrandau(doithamgia,vitri+1);
if vttim<=sotran then
chontrandau(doithamgia,sotran1vong,vitri,tran1vong ,vttim)
else
khongchontrandau(doithamgia,sotran1vong,vitri,tran 1vong);
end;
xuat(tran1vong);
sovong:=sovong+1;
end;
end;
(*------------------------------------------------*)
procedure xeplichle;
var sovong,sotran1vong,vitri,vttim,temp:byte;
doithamgia:taphop;
tran1vong:mang2;
begin
sovong:=1;
while sovong<=sodoi do
begin
sotran1vong:=0;
doithamgia:=[sovong];
vitri:=0;
while sotran1vong<(sodoi div 2) do
begin
vttim:=timtrandau(doithamgia,vitri+1);
if vttim<=sotran then
chontrandau(doithamgia,sotran1vong,vitri,tran1vong ,vttim)
else
khongchontrandau(doithamgia,sotran1vong,vitri,tran 1vong);
end;
xuat(tran1vong);
sovong:=sovong+1;
end;
end;
(*------------------------------------------------*)
procedure nhapsodoi;
begin
repeat
write('So doi:');
readln(sodoi);
if (sodoi<2) or (sodoi>20) then
writeln('Du lieu khong hop le !')
until (sodoi>=2) and (sodoi<=20);
end;
(*------------------------------------------------*)
procedure gantrandau;
var i,j:byte;
begin
sotran:=0;
for i:=1 to sodoi-1 do
for j:=i+1 to sodoi do
begin
sotran:=sotran+1;
trandau[sotran].doi1:=i;
trandau[sotran].doi2:=j;
trandau[sotran].chon:=false;
end;
end;
(*------------------------------------------------*)
begin
nhapsodoi;
gantrandau;
if sodoi mod 2 = 0 then
xeplichchan
else
xeplichle;
end.
(*-------------------------------------------------*)
//************************************************** ****//
program laplich;
type
data1=record
doi1,doi2:byte;
chon:boolean;
end;
mang1=array[1..190] of data1;
data2=record
doi1,doi2,vitri:byte;
end;
mang2=array[1..19] of data2;
taphop=set of 1..20;
var sodoi,sotran:byte;
trandau:mang1;
(*-- Ham tim vi tri tran dau thoa dieu kien ----------------*)
function timtrandau(doithamgia:taphop;vitri:byte):byte;
begin
while vitri<=sotran do
begin
if (trandau[vitri].chon=true) or
(trandau[vitri].doi1 in doithamgia) or
(trandau[vitri].doi2 in doithamgia) then
vitri:=vitri+1
else
begin
timtrandau:=vitri;
exit;
end;
end;
timtrandau:=vitri;
end;
(*----------------------------------------------------------------*)
procedure chontrandau(var doithamgia:taphop;var sotran1vong,vitri:byte;
var tran1vong:mang2;vttim:byte);
begin
vitri:=vttim;
doithamgia:=doithamgia+[trandau[vttim].doi1];
doithamgia:=doithamgia+[trandau[vttim].doi2];
trandau[vttim].chon:=true;
sotran1vong:=sotran1vong+1;
tran1vong[sotran1vong].doi1:=trandau[vttim].doi1;
tran1vong[sotran1vong].doi2:=trandau[vttim].doi2;
tran1vong[sotran1vong].vitri:=vttim;
end;
(*----------------------------------------------------------------*)
procedure khongchontrandau(var doithamgia:taphop;var sotran1vong,vitri:byte;
tran1vong:mang2);
begin
vitri:=tran1vong[sotran1vong].vitri;
doithamgia:=doithamgia-[trandau[vitri].doi1];
doithamgia:=doithamgia-[trandau[vitri].doi2];
trandau[vitri].chon:=false;
sotran1vong:=sotran1vong-1;
end;
(*--------------------------------------------------------------------*)
procedure xuat(tran1vong:mang2);
var temp:byte;
begin
for temp:=1 to (sodoi div 2) do
writeln(tran1vong[temp].doi1,' ',tran1vong[temp].doi2);
readln;
end;
(*--------------------------------------------------------------------*)
procedure xeplichchan;
var sovong,sotran1vong,vitri,vttim:byte;
doithamgia:taphop;
tran1vong:mang2;
begin
sovong:=1;
while sovong<sodoi do
begin
sotran1vong:=0;
doithamgia:=[];
vitri:=0;
while sotran1vong<(sodoi/2) do
begin
vttim:=timtrandau(doithamgia,vitri+1);
if vttim<=sotran then
chontrandau(doithamgia,sotran1vong,vitri,tran1vong ,vttim)
else
khongchontrandau(doithamgia,sotran1vong,vitri,tran 1vong);
end;
xuat(tran1vong);
sovong:=sovong+1;
end;
end;
(*------------------------------------------------*)
procedure xeplichle;
var sovong,sotran1vong,vitri,vttim,temp:byte;
doithamgia:taphop;
tran1vong:mang2;
begin
sovong:=1;
while sovong<=sodoi do
begin
sotran1vong:=0;
doithamgia:=[sovong];
vitri:=0;
while sotran1vong<(sodoi div 2) do
begin
vttim:=timtrandau(doithamgia,vitri+1);
if vttim<=sotran then
chontrandau(doithamgia,sotran1vong,vitri,tran1vong ,vttim)
else
khongchontrandau(doithamgia,sotran1vong,vitri,tran 1vong);
end;
xuat(tran1vong);
sovong:=sovong+1;
end;
end;
(*------------------------------------------------*)
procedure nhapsodoi;
begin
repeat
write('So doi:');
readln(sodoi);
if (sodoi<2) or (sodoi>20) then
writeln('Du lieu khong hop le !')
until (sodoi>=2) and (sodoi<=20);
end;
(*------------------------------------------------*)
procedure gantrandau;
var i,j:byte;
begin
sotran:=0;
for i:=1 to sodoi-1 do
for j:=i+1 to sodoi do
begin
sotran:=sotran+1;
trandau[sotran].doi1:=i;
trandau[sotran].doi2:=j;
trandau[sotran].chon:=false;
end;
end;
(*------------------------------------------------*)
begin
nhapsodoi;
gantrandau;
if sodoi mod 2 = 0 then
xeplichchan
else
xeplichle;
end.
(*-------------------------------------------------*)