30/09/2018, 23:37

Thuật toán liệt kê hoán vị

Mình đọc trong sách Giải thuật và lập trình của tác giả Lê Minh Hoàng, mình chạy thử code bằng fpc thì lỗi exitcode 2, ideone thì runtime error 2

program Permutation;
const
	InputFile  = 'PERMUTE.INP';
	OutputFile = 'PERMUTE.OUT';
	max = 12;
var
	n, i, k, a, b: Integer;
	x: array[1..max] of Integer;
	f: Text;

procedure Swap(var X, Y: Integer);
var
	Temp: Integer;
begin
	Temp := X; X := Y; Y := Temp;
end;

begin
	Assign(f, InputFile); Reset(f);
	Readln(f, n);
	Close(f);
	Assign(f, OutputFile); Rewrite(f);

	for i := 1 to n do x[i] := i;
	repeat
		for i := 1 to n do write(x[i],' ');
		WriteLn(f);
		i := n - 1;
		while (i > 0) and (x[i] > x[i + 1]) do Dec(i);
		if i > 0 then
		begin
			k := n;
			while x[k] < x[i] do Dec(k);
			Swap(x[k], x[i]);
			a := i + 1; b := n;
			while a < b do
			begin
				Swap(x[a], x[b]);
				Inc(a);
				Dec(b);
			end;
		end;
	until i = 0;
	Close(f);
end.
Sáng Béo viết 01:48 ngày 01/10/2018

Exit code 2 là File not found. bạn xem 2 cái file kia đã cùng thư mục với file code chưa?

Huy Gia viết 01:38 ngày 01/10/2018

Mình đã làm rồi

Sáng Béo viết 01:50 ngày 01/10/2018

tên file phải đúng như thế cả in hoa in thường nhé, rồi đường dẫn thư mục không nên để tiếng Việt có dấu nữa.

Phạm Phúc viết 01:45 ngày 01/10/2018

x: array[1…max] of Integer;

Em xin lỗi đã khai thác bài viết cũ, tại em đang tìm hướng dẫn viết hoán vị thấy bài viết này ạ, em nghĩ exit code 2 là anh khai báo chắc có gì đó sai.

BLueVVolf viết 01:37 ngày 01/10/2018

một chút chỉnh sửa mong có giúp ích

program hoanvi;
var
	n, i, k, a, b: Integer;
	x: array[1..100] of Integer;

procedure Swap(var X, Y: Integer);
var
	Temp: Integer;
begin
	Temp := X; X := Y; Y := Temp;
end;

begin
        write('nhap n: '); Readln(n);
	for i := 1 to n do x[i] := i;
	repeat
		for i := 1 to n do write(x[i],' ');
		WriteLn;
		i := n - 1;
		while (i > 0) and (x[i] > x[i + 1]) do Dec(i);
		if i > 0 then
		begin
			k := n;
			while x[k] < x[i] do Dec(k);
			Swap(x[k], x[i]);
			a := i + 1; b := n;
			while a < b do
			begin
				Swap(x[a], x[b]);
				Inc(a);
				Dec(b);
			end;
		end;
	until i = 0;
readln;
end.
Bài liên quan
0