This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

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

Các bài tập cơ bản

Thứ Sáu, 18 tháng 9, 2020

Giáo trình Pascal

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:


Chú ý đến những điểm mới đánh dấu bằng hình chữ nhật 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
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 j:= i+1 to n do
                  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;

Chú ý: Thuật toán sắp xếp nhanh phải tổ chức dưới dạng một thủ tục để gọi đệ quy

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.