MỘT SỐ HOẠT ĐỘNG THPT CHE GUEVARA TỪ XƯA TỚI NAY
THPT Che Guevara Picnic 2010
Gốc > GÓC HỌC TẬP > Pascal và C >
Trần Lâm Ngân @ 12:00 08/04/2009
Số lượt xem: 977
Bài tập Pascal mới:
Cho một dãy số nguyên lấy ra từ tệp ‘SN.dat’ hãy viết chương trình tìm đoạn dài nhất các phần tử liên tiếp tạo thành một dãy không giảm.
VD cho dãy: 1 2 3 2 3 4 4 5 6 7 2 4 5 8 5 6 8 9
đoạn dài nhất là: 2 3 4 4 5 6 7
Trần Lâm Ngân @ 12:00 08/04/2009
Số lượt xem: 977
Số lượt thích:
0 người
- Mời các em tham gia giải đề thi sau : (01/04/09)
- Thuật toán Dijkstra. (26/03/09)
- Viết chương trình tạo thời khóa biểu có dạng sau: (18/03/09)

Đây là bài làm của em.
uses crt;
var f1,f2:text;
a,b,c: array[1..100] of integer;
i,j,count,n,k,maxnum,maxpos:integer;
procedure input;
begin
assign(f1,'d:\data.in'); reset(f1);
assign(f2,'d:\data.out'); rewrite(f2);
i:=1;
while not(eof(F1)) do
begin
read(f1,a[i]);
i:=i+1;
end;
n:=i-1;
end;
procedure analyze;
begin
for i:=1 to n do
begin
k:=i;
count:=1;
while (a[k+1]>=a[k]) and (k+1<n) do
begin
count:=count+1;
k:=k+1;
end;
b[i]:=count;
end;
maxnum:=b[1];
maxpos:=1;
for i:=2 to n do
if b[i]>maxnum then
begin
maxnum:=b[i];
maxpos:=i;
end;
end;
procedure output;
begin
for i:=maxpos to maxpos+maxnum-1 do write(f2,a[i],' ');
close(f2);
end;
begin
input;
analyze;
output;
end.
Giải thuật
- input: dữ liệu từ file data.in nhập vào mảng a; đếm số phần tử gán biến n;
-anlyze: xử lí:
+Chạy lần lượt từ giá trị đầu mảng a đến n xét xem nếu phần tử đứng sau lớn hơn phần tử đứng trước thì đếm bằng biến count; rồi gán giá trị đếm count tương ứng vào mảng b;
+ Tìm giá trị lớn nhất trong mảng b(maxnum) và vị trí tương ứng (maxpos);
- output:ghi file bắt đầu ghi maxnum-1 giá trị từ vị trí đầu maxpos.
Thông báo: Vừa khai trương vài mục dành cho Học sinh