1. Trang chủ
  2. » Giáo án - Bài giảng

Bài tập Pascal : Số đơn điệu

1 4,9K 68
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 1
Dung lượng 34 KB

Nội dung

Ngày 8/3/2009 Bài tập Pascal Bài 1: Số đơn điệu Định nghĩa: Các số nguyên dương luân phiên tăng giảm hoặc giảm tăng được gọi là các số đơn điệu.. Dữ liệu: DuLieu.Vao Kết quả: KetQua.Ra V

Trang 1

Ngày 8/3/2009 Bài tập Pascal

Bài 1: Số đơn điệu

Định nghĩa: Các số nguyên dương luân phiên tăng giảm hoặc giảm tăng được gọi là các số đơn điệu.

Ví dụ: 4537 vì 4 < 5 > 3 < 7

Yêu cầu: Viết chương trình xác định số chữ số đầu tiên lớn nhất tạo thành số đơn điệu của một số cho trước.

Dữ liệu: DuLieu.Vao

Kết quả: KetQua.Ra

Ví dụ:

*Phân tích tìm thuật giải:

- Các dạng số đơn điệu: Có 2 dạng phụ thuộc vào hai chữ số đầu

- Dạng 1:

Chữ số thứ nhất lớn hơn chữ số thứ hai Ví dụ: 7564 Đặt: a1=7; a2=5; a3=6; a4=4 Ta có: a1 > a2; a2 < a3; a3 > a4 Gọi i là chữ số thứ i Khi đó:

If i mod 2 <> 0 then a[i] > a[i+1]

If i mod 2 = 0 then a[i] < a[i+1]

- Dạng 2:

Chữ số thứ hai lớn hơn chữ số thứ nhất Ví dụ: 5746 Đặt: a1=5; a2=7; a3=4; a4=6 Ta có: a1 < a2; a2 > a3; a3 < a4 Gọi i là chữ số thứ i Khi đó:

If i mod 2 <> 0 then a[i+1] > a[i]

If i mod 2 = 0 then a[i+1] < a[i]

*Từ đó ta có chương trình

Var

xau : string; i, n : integer;

kt : boolean;

so1, so2,x1,x2, z : integer;

St1 : Text; St2: Text;

begin

Assign(St1,”dulieu.Vao”); Reset(St1); if not eof(St1) then read(St1,xau); close(St1);

kt:=false; i:=1; n:=1;

if length(xau)>1 then

begin

repeat

i:=i+1;

if i=length(xau) then kt:=true;

if i<length(xau) then

val(xau[i],so1,z); val(xau[i+1],so2,z); val(xau[1],x1,z); val(xau[2],x2,z);

if x1>x2 then

if i mod 2 = 0 then if so2>so1 then n:=n+1 else begin n:=n+1; kt:=true; end;

if i mod 2 <> 0 then if so1>so2 then n:=n+1 else begin n:=n+1; kt:=true; end;

if x2>x1 then

if i mod 2 = 0 then if so1>so2 then n:=n+1 else begin n:=n+1; kt:=true; end;

if i mod 2 <> 0 then if so2>so1 then n:=n+1 else begin n:=n+1; kt:=true; end;

until KT;

write(n);

Assign(St2,”Ketqua.ra”); Rewrite(St2); Write(St2, n); Close(St2);

end;

readln

end

Ngày đăng: 26/07/2013, 01:25

TỪ KHÓA LIÊN QUAN

w