Hiển thị các bài đăng có nhãn lythuyetpascal. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn lythuyetpascal. Hiển thị tất cả bài đăng
Thứ Bảy, 19 tháng 9, 2020
Thứ Sáu, 18 tháng 9, 2020
Thứ Sáu, 22 tháng 11, 2019
Nhập xuất file
Làm bài tập Pascal theo định dạng đề thi
(nhập dữ liệu từ file và xuất kết quả ra file)
Ví dụ 1: Cho hình chữ nhật có chiều dài là a và chiều rộng
là b
Yêu cầu: Hãy tính diện tích và chu vi hình chữ nhật
Input: vào từ file chunhat.inp gồm 1 dòng ghi lần lượt hai số
nguyên a và b (0<b<a<200). Mỗi số cách nhau 1 kí tự trắng
Output: ghi ra file chunhat.out gồm
-dòng 1: Ghi diện tích
-dòng 2: Ghi chu vi
Ví dụ:
chunhat.inp
|
chunhat.out
|
9 3
|
27
24
|
Chương trình mẫu:
Ví dụ 2:
Cho
một dãy A gồm N số nguyên a1, a2, …, aN, mỗi số
có giá trị tuyệt đối không vượt quá 1000000.
Yêu cầu: Hãy sắp xếp dãy trên thành một dãy tăng
Input: Nhập vào từ file dayso.inp
- Dòng đầu tiên chứa số nguyên dương N (0<n<=10000).
- N dòng sau: Dòng thứ i chứa số ai.
Output: Ghi ra file dayso.out
- Dòng đầu tiên ghi: Day sau khi da sap xep:
- Dòng sau: Ghi dãy A đã được sắp xếp tăng. (mỗi
số cách nhau 1 kí tự trắng)
Ví dụ:
dayso.inp
|
dayso.out
|
7
9
-1
6
7
3
2
9
|
Day sau khi da sap xep:
-1 2 3 6 7 9 9
|
Chương trình mẫu:
Chú ý khi nhập xuất file:
-tên file nhập, xuất phải giống như yêu cầu của đề (box.inp khác với boxs.inp)
-thông tin xuất ra file cũng phải giống hệt 100% như yêu cầu
của đề (in cái gì trước, cái gì sau, viết thường, viết hoa, dấu, khoảng cách, xuống hàng,…)
Thứ Tư, 20 tháng 11, 2019
Thuật toán sắp xếp
Thuật toán sắp xếp nổi bọt (hubble sort)
Giả sử dãy a cần sắp xếp có n phần tử (a1èan) theo thứ tự tăng.
+Sắp xếp từ trên xuống
+Sắp xếp từ trên xuống
Khi tiến hành
từ trên xuống, ta so sánh hai phần tử đầu, nếu phần tử đứng trước lớn hơn phần
tử đứng sau thì đổi chỗ chúng cho nhau. Tiếp tục làm như vậy với cặp phần tử
thứ hai và thứ ba và tiếp tục cho đến cuối tập hợp dữ liệu, nghĩa là so sánh
(và đổi chỗ nếu cần) phần tử thứ n-1 với phần tử thứ n.
Sau bước này phần tử cuối cùng chính là phần tử lớn nhất của dãy.
Sau đó, quay lại so sánh (và đổi chố nếu cần) hai phần tử đầu
cho đến khi gặp phần tử thứ n-2....
For i:=n down to 2 do
For j:=1 to i-1 do
if a[j] > a[j+1] then
đổichỗ(a[j],a[j+1])
+Sắp xếp từ dưới lên
Sắp xếp từ dưới lên so sánh (và đổi chỗ nếu cần) bắt đầu từ việc
so sánh cặp phần tử thứ n-1 và n. Tiếp theo là so sánh
cặp phần tử thứ n-2 và n-1,... cho đến khi so sánh và
đổi chỗ cặp phần tử thứ nhất và thứ hai. Sau bước này phần tử nhỏ nhất đã
được nổi lên vị trí trên cùng (nó giống như hình ảnh của các
"bọt" khí nhẹ hơn được nổi lên trên). Tiếp theo tiến hành với các
phần tử từ thứ 2 đến thứ n.
For i:=2 to n do
For j:=n downto i do
if a[j]<a[j-1] then đổichỗ(a[i],a[j]);
+độ phức tạp của bài toán
là O(n2).

Một cách cài đặt khác
For i:= 1 to n-1 do
For i:= 1 to n-1 do
For j:=
i+1 to n do
if (a[i] > a[j]) then
đổichỗ(a[i],a[j]);
if (a[i] > a[j]) then
đổichỗ(a[i],a[j]);
Thuật toán sắp xếp nhanh (Quick Sort)
Procedure sxnhanh(l,r:integer);
Var i,j,x,tg:integer;
Begin
x:=a[(l+r) div 2];
i:=l;j:=r;
Repeat
While(a[i]<x)
do i:=i+1;
While (x<a[j])
do j:=j-1;
if i<=j then
Begin
tg:=a[i];a[i]:=a[j];a[j]:=tg;
i:=i+1;j:=j-1;
End;
until i>j;
if l<j then
sxnhanh(l,j);
if i<r then
sxnhanh(i,r);
End;
Thứ Sáu, 7 tháng 12, 2018
Ví dụ về chương trình con (có cấu trúc)
const
fin='test.inp'; fon='test.out';
maxmn=1000;maxn=1000;
vc=maxlongint;
var
cs:array[0..9] of string;
n,d:longint;
procedure
nhap;
var
i:Longint;s:string; c:char;
begin
d:=-1;s:='';
while not
eoln do
begin
read(c);
if c<>' ' then s:=s+c
else
begin inc(d);cs[d]:=s;s:=''; end;
end;
end;
function
doccs(x:longint):string;
var
max:string;
begin
max:=cs[x
mod 10];
while
x>0 do
begin
if cs[x mod 10]>max then max:=cs[x mod
10];
x:=x div 10;
end;
exit(max);
end;
procedure
xuli;
var
s,i,x:longint;
begin
read(n);
for i:=1
to n do
begin
read(x);
writeln(doccs(x));
end;
end;
begin
assign(input,fin);reset(input);
assign(output,fon);rewrite(output);
nhap;
xuli;
close(input);close(output);
end.
Thứ Ba, 14 tháng 8, 2018
Các hàm thường dùng (có sẵn)
abs(x) - Giá trị tuyệt đối của x (tham số x là
số nguyên hoặc thực)
frac(x) - cho kết quả là phần thập phân của số
x. (tham số x là số nguyên hoặc thực)
int(x) - cho kết quả là phần nguyên của số thập
phân x. (trả về một số thực có phần thập phân là 0, tham số x là số nguyên hoặc
thực)
trunc(x)-Lấy phần nguyên của số x (trả về là một số nguyên, tham
số x là số nguyên hoặc thực)
sqr(x) - bình phương của số x. (tham số x là số
nguyên hoặc thực)
sqrt(x) - cho kết quả là căn bậc hai của x. (tham
số x là số nguyên hoặc thực)
pred(x) - cho kết quả là số nguyên đứng trước số
nguyên x. (tham số x là số nguyên)
suuc(x) - cho kết quả là số nguyên đứng sau số
nguyên x. (tham số x là số nguyên)
odd(x) - cho kết quả là true nếu x số lẻ, ngược
lại là false. (tham số x là số nguyên)
round(x) - Làm tròn số thực x. (tham số x là số
nguyên hoặc thực)
chr(x) - trả về một kí tự có vị trí là x trong
bảng mã ASCII.
Ord(x) - trả về một số thứ tự của kí tự x.
Đăng ký:
Bài đăng (Atom)













