Thứ Tư, 25 tháng 12, 2013

Đọc dữ liệu từ tệp vào mảng đối xứng



Đọc dữ liệu kiểu nguyên từ một tệp văn bản có tên fn vào một mảng hai chiều đối xứng.
Tệp có cấu trúc như sau:
- Số đầu tiên ghi số lượng cột (và đồng thời là số lượng dòng) của mảng.
- Tiếp đến là các dữ liệu ghi liên tiếp nhau theo nửa tam giác trên tính từ  đường chéo chính.
- Các số cùng dòng cách nhau ít nhất một dấu cách.
Thí dụ: 3 1 2 3 4 6 8  sẽ được bố trí vào mảng 3 ´ 3 như sau:
1
2
3
2
4
6
3
6
8
Thuật toán
1. Mở tệp.
2. Đọc giá trị đầu tiên vào biến n: số lượng cột và dòng của ma trận vuông đối xứng.
3. Với mỗi dòng i ta đọc phần tử trên đường chéo chính của dòng đó a[i, i], sau đó ta đọc các phần tử nằm ở bên phải a[i, i], tức là a[i, j] với j = i + 1..n rồi lấy đối xứng bằng phép gán a[j, i]:= a[i, j].
(*  Pascal  *)
uses crt;
const MN = 100;
var   a: array[1..MN,1..MN] of integer;
      n: integer; { kich thuoc mang }
Function Doc(fn: string): Boolean;
var   f: text; i, j: integer;
begin
Doc := FALSE; assign(f,fn);
{$I-} reset(f); {$I+}
if IORESULT <> 0 then exit;
read(f,n);
for i := 1 to n do
begin
read(f,a[i,i]);
for j := i+1 to n do
begin
  read(f,a[i,j]); a[j,i]:= a[i,j];
end;
end;
close(f); Doc:= TRUE;
end;
procedure Xem(n,m: integer); tự viết
BEGIN
if Doc('DATA.INP') then Xem(n,n)
else write('Khong mo duoc tep ');
   readln;
END.
Tag: gia sư tin học

Không có nhận xét nào:

Đăng nhận xét