Thứ Bảy, 14 tháng 4, 2012

Đếm số lần xuất hiện của mỗi chữ cái trong xâu

Viết chương trình nhập vào từ bàn phím một xâu kí tự S và thông báo ra màn hình số lần xuất hiện của mổi chứ cái tiếng Anh trong S ( không phân biệt chữ hoa và chữ thường).

Uses Crt;
Var    St:String;
       dem: Array[‘A’..’Z’] Of Byte;
       i:Byte;
       ch:Char;
Begin
    Write(‘Nhap xau St: ‘); Readln(St);
    {Khởi tạo mảng}
    For ch:=’A’ To ‘Z’ Do dem[ch]:=0;
    {Duyệt xâu}
    For i:=1 To Length(St) Do
        If Upcase(St[i]) IN [‘A’..’Z’] Then              Inc(dem[Upcase(St[i])]);
    {Liệt kê các ký tự ra màn hình}
    For ch:=’A’ To ‘Z’ Do
        If dem[ch]>0 Then Writeln(ch,’ : ’,dem[ch]);
    Readln;
End.



Thứ Năm, 12 tháng 4, 2012

Kiểm tra cấp số cộng trong pascal

Nhập dãy số gồm N số nguyên (N<100). Xác định xem đó có phải dãy số có tính chất là cấp số cộng hay không.

uses crt;
  Var
  A:array[1..100] of integer;
  i,n,d: integer;
  CS: boolean;
  BEGIN
  clrscr;
  repeat
  Write(' Nhap vao so nguyen duong N <=100 : ');
  readln(N);
  Until (n>1) and (n<=100);
  For i:=1 to n do
     begin
     repeat
     write('A[',i,'] = ');
     readln(A);
     until abs(A)<=1000;
     end;
     d:=abs(A[2]-A[1]);
     CS:=True;
     For i:=2 to n do
         IF (abs(A-A[i-1])<>d) then  
                                   begin
                                    CS:=False;
                                    break;
                                   end;
     IF CS then writeln('Day la cap so cong ')
           else writeln(' Day ko phai la cap so cong ');
     readln;
  END.

Thứ Tư, 11 tháng 4, 2012

Bài 5: Xâu ký tự (String) trong Pascal

Xâu là gì? Để xử lý các chuỗi văn bản, Pascal đưa ra một kiểu dữ liệu mới gọi là xâu ký tự và được định nghĩa bằng từ khóa STRING. Xâu ký tự là dữ liệu bao gồm một dãy các ký tự trong bảng mã ASSCII.

Cách khai báo:

Var: STRING[độ dài của xâu];

Xâu ký tự trong bộ nhớ nó chiếm số byte bằng số ký tự cực đại được khai báo cộng với byte đầu tiên chứa số ký tự hiện có của xâu. Độ dài tối đa của xâu ký tự là 255.

- Cách nhập/xuất: Cách đọc hay viết kiểu STRING cũng tương tự như các kiểu dữ liệu khác, ta sử dụng các thủ tục READ, hoặc WRITE.
Ví dụ:
Readln(st);
Writeln(st);

- Truy cập từng phần tử của xâu ký tự: tương tự mảng 1 chiều: thông qua tên biến kiểu STRING và chỉ số của nó
Ví dụ:
St := 'Le Thanh Lam';
write(st[4]);
-> Kết quả: cho ra chữ T.

Các thao tác trên xâu ký tự:

1/ Phép cộng xâu:

Ví dụ:
st1:=’Le’; st2:=’Thanh’; St=st1 + st2; 
-> KQ: ‘Le Thanh’

2/ Phép so sánh: 
Hai xâu ký tự có thể so sánh với nhau bằng các phép so sánh =, >, <…
Nguyên tắc so sánh thực hiện như sau, chúng sẽ đem từng ký tự tương ứng với nhau để so sánh, xâu nào có ký tự có số thứ tự trong bảng mã ASCII lớn hơn thì xâu đó lớn hơn.
Hai xâu ký tự được gọi là bằng nhau khi chúng hoàn toàn giống nhau (có độ dài như nhau).
Ví dụ: ‘FILENAME’ = ’FILENAME ‘

3/ Các thủ tục và hàm chuẩn xử lý xâu ký tự
a. Hàm length(st): cho độ dài thực của xâu ký tự
ví dụ: st:=’le thanh’ thì LENGTH(st) cho bằng 8.

b/ Thủ tục DELETE(st, pos, num): xóa num ký tự trong xâu st kể từ vị trí pos
Ví dụ: st= ‘FILENAME’
Delete(st,5,4) lúc đó st cho ra là ‘FILE’

c/ Thủ tục INSERT(obj, st, pos): Thủ tục cho kết quả bằng cách chèn xâu ký tự có tên là Obj vàoxâu st tại vị trí pos, những ký tự đứng sau pos sẽ được dời vềphía sau của xâu ký tự obj.
Ví dụ: obj:= ‘Thanh ‘
st:=’Le Lam’;
INSERT(obj,st,4) lúc đó st=’Le Thanh Lam’;

d/ Thủ tục STR(value, st): Thủ tục này thực hiện việc chuyển đối giá trị kiểu số(value) sang dạng xâu ký tự và gán cho biến st.
Ví dụ: n là một só nguyên có giá trị: n:=150;
STR(n:5,st) sẽ cho kết quả xâu st là: st=’ 150’;

e/ Thủ tục VAL(st, value,code) đối một xâu ký tự st sang dạng số và gán cho biến value, nếu biến đối thành công thì code sẽ nhận giá trị bằng 0. ngược lại thì cho giá trị khác không
Ví dụ: VAL(‘123’,value,code) lúc này code sẽ nhận giá trị bằng 0 và value=123

f/ Hàm COPY(st, pos, num): sao chép trong xâu st, num ký tự tại vị trí pos,
Ví dụ: st=’Le Thanh Lam’
COPY(st,4,5) = ‘Thanh’;

g/ Hàm CONCAT(s1,s2,…,sn): hàm cho ra 1 xâu mới bằng cách nối đuôi các xâu s1,s2,…,sn lại với nhau.
Ví dụ: CONCAT(‘Le ’,’Thanh ‘, ‘Lam’) = ‘Le Thanh Lam’;

h/ Hàm POS(st1,st2): hàm cho tavị trí tìm thấy đầu tiên của xâu s1 trong xâu s2.
Ví dụ: POS(‘Lam’,‘Le Thanh Lam’) = 10;

Sưu tầm và biên tập

Thứ Ba, 10 tháng 4, 2012

Ebook Giải thuật và lập trình – Lê Minh Hoàng

Ebook Giải thuật và lập trình  Lê Minh Hoàng

Nếu bạn là người đam mê tin học, nếu bạn là người muốn khám phá về lập trình, hẳn bạn phải biết đến một cuốn sách tin học rất nổi tiếng ở Việt Nam trong nhiều năm trở lại đây. Từ những học sinh không chuyên đến những thành viên đội tuyển thi quốc tế tin học, có lẽ không một ai chưa từng học qua cuốn sách được biên soạn bởi một thầy giáo trẻ những đầy tài năng của trường Đại học Sư phạm Hà Nội, thầy Lê Minh Hoàng.


Mục lục:

PHẦN 1 – BÀI TOÁN LIỆT KÊ

  • 1-Nhắc lại một số kiến thức đại số tổ hợp
  • 2-Phương pháp sinh
  • 3-Thuật toán quay lui
  • 4-Kỹ thuật nhánh cận

PHẦN 2 – CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

  • 1-Các bước cơ bản khi tiến hành giải các bài toán tin học
  • 2-Phân tích thời gian thực hiện giải thuật
  • 3-Đệ quy và giải thuật đệ quy
  • 4-Cấu trúc dữ liệu biểu diễn danh sách
  • 5-Ngăn xếp và hàng đợi
  • 6-Cây
  • 7-Ký pháp tiền tố, trung tố và hậu tố
  • 8-Sắp xếp
  • 9-Tìm kiếm

PHẦN 3 – QUY HOẠCH ĐỘNG

  • 1-Công thức truy hồi
  • 2-Phương pháp quy hoạch động
  • 3-Một số bài toán quy hoạch động

PHẦN 4 – CÁC THUẬN TOÁN TRÊN ĐỒ THỊ

  • 1-Các khái niệm cơ bản
  • 2-Biểu diễn đồ thị trên máy tính
  • 3-Các thuật toán tìm kiếm trên đồ thị
  • 4-Tính liên thông của đồ thị
  • 5-Vài ứng dụng của các thuật toán tìm kiếm trên đồ thị
  • 6-Chu trình Euler, đường euler, đồ thị euler
  • 7-Chu trình Hamilton, đường đi Hamilton, Đồ thị Hamilton
  • 8-Bài toán đường đi ngắn nhất
  • 9-Bài toán cây khung nhỏ nhất
  • 10-Bài toán luồng cực đại trên mạng
  • 11-Bài toán tìm bộ ghép cực đại trên đồ thị hai phía
  • 12-Bài toán tìm bộ ghép cực đại với trọng số cực tiểu trên đồ thị hai phía – thuật toán Hungari
  • 13-Bài toán tìm bộ ghép cực đại trên đồ thị

Tải về: Ebook Giải thuật và lập trình [pdf]
Hoặc xem online: Ebook giải thuật và lập trình - Upload by Codepascal.blogspot.com

Phân tích một số ra thừa số nguyên tố

Ví dụ: Phân tích 12=2*2*3. Ý tưởng: Thuật toán phân tích một số ra thừa số nguyên tố tương tự như thuật toán kiểm tra số nguyên tố. Điểm khác ở đây là khi kiểm tra số nguyên tố ta phải lần lượt kiểm tra các số nhỏ hơn sqrt(n) (căn bậc hai của n) có phải là ước của n hay không, còn khi phân tích ta chỉ việc chia n cho các số nguyên bắt đầu từ số nguyên tố nhỏ nhất là 2. Khi không chia được nữa thì ta tăng số chia lên 1 đơn vị, quá trình phân tích kết thúc khi n bằng 1.

VAR i,n :INTEGER;
BEGIN
    Write ('Nhap n:');
    Readln(n);
    Write (n,'=');
    i:=2;
    REPEAT
        WHILE n MOD i <> 0 DO
            i:=i+1;
        Write(i);
        n:=n DIV i;
        IF n > 1 THEN
            write ('*');
    UNTIL n = 1;
    readln;
END.

Viết code trực tuyến với Ideone – online mini IDE and debugging tool


Ideone.com là một… pastebin (dùng để lưu trữ text trực tuyến). Tuy nhiên, nó không giống như các pastebin khác trên Internet. Chính xác hơn nó là IDE và công cụ gỡ rối trực tuyến (online mini IDE and debugging tool ).

Ideone là một từ tiếng Ý có nghĩa là ý tưởng tuyệt vời – bởi vì ideone.com là nơi mà những ý tưởng lớn của bạn có thể trở thành hiện thực.
Ideone.com được thiết kế cho hầu hết các lập trình viên (tất nhiên, bạn cũng có thể tải lên một văn bản thông thường). Bạn có thể sử dụng nó để:
  • Chia sẻ code của bạn (rõ ràng rồi – nó là một pastebin, đúng không nào?) một cách rõ ràng
  • Chạy (run) code của bạn trên máy chủ hỗ trợ hơn 40 ngôn ngữ lập trình (tương lai sẽ hỗ trợ thêm nhiều ngôn ngữ hơn)
  • Bạn có thể cung cấp dữ liệu đầu vào (input data) cho chương trình của riêng bạn
  • Ideone.com cũng cung cấp miễn phí ideone API có sẵn như một webservice. Chức năng này cho phép bạn xây dựng các dịch vụ riêng của bạn giống như ideone!
  • Cho phép người dùng đăng nhập Ideone và cung cấp chức năng quản lý code của riêng mỗi người và nhiều chức năng khác nữa.
Tất cả các code có thể truy cập thông qua URL chia sẻ. Các trang lưu code cung cấp thông tin về code và thực thi của nó: bộ nhớ sử dụng, thời gian thực thi, ngôn ngữ và phiên bản trình biên dịch, code, input được tải lên bởi người sử dụng, output được tạo ra bởi chương trình và thông báo lỗi từ các trình biên dịch và gỡ rối.

for every one Viết code trực tuyến với Ideone   online mini IDE and debugging tool
Hỗ trợ hơn 40 ngôn ngữ: hợp ngữ, Pascal, C/C++, C#, Java, PHP,... Chọn ngôn ngữ, gõ hoặc paste code và input rồi nhấn submit

syntax highlight Viết code trực tuyến với Ideone   online mini IDE and debugging tool
Để trình bày code được rõ ràng hơn, bạn click chọn Syntax highlight

share link Viết code trực tuyến với Ideone   online mini IDE and debugging tool
Url để chia sẻ code

run result Viết code trực tuyến với Ideone   online mini IDE and debugging tool
Kết quả chạy một chương trình mẫu bằng ngôn ngữ C++

Một điều chắc chắn rằng bạn sẽ không dùng ideone để viết phần mềm, có nhiều môi trường tuyệt vời hơn để làm điều đó. Trong trường hợp khẩn cấp, cần kiểm thử code, Ideone sẽ là một trợ thủ đắc lực cho bạn. Nếu bạn muốn dùng thường xuyên, bạn có thể tạo một tài khoản và nó sẽ lưu lại các code của bạn, và bạn có thể chỉnh sửa, bỏ các quảng cáo, tăng thời gian chạy lên 15 giây và hơn thế nữa.

Bạn cũng có thể viết và chạy thử code trên điện thoại bằng các ứng dụng được phát triển dựa vào API của ideone (yêu cầu có kết nối internet):

idedroid Viết code trực tuyến với Ideone   online mini IDE and debugging tool
IDEdroid ứng dụng dành cho hệ điều hành Android, bạn có thể sử dụng bất kì ngôn ngữ lập trình nào có trên ideone.

904bc03316677229.jpg Viết code trực tuyến với Ideone   online mini IDE and debugging tool
CodeToGo ứng dụng dành cho các thiết bị iOS (iPhone, iPod Touch, and iPad), chọn ngôn ngữ, viết code và chạy.

Ideone mobile environment chạy trên nền Java ME, một IDE đơn giản cho phép tải code lên ideone.com, thực thi và lấy kết quả về.

Tải về: Mã nguồn | JAR (Rebuild) | JAD (Rebuild)

Theo Kỹ thuật lập trình

Đưa ra xâu đảo theo từ

Viết chương trình nhập vào xâu, đưa ra xâu đảo theo từ. Ví dụ: đi xe đạp -> đạp xe đi.

uses crt;
var s:string;
    x,y,z,t:byte;
begin
  write('Nhap vao mot xau: ');
  readln(s);
  z:=length(s);
  for y:=length(s) downto 1 do
  begin
    if ((s[y]=' ')or(y=1)) then begin for t:=y to z do write(s[t]);z:=y end;
    write(' ');
  end;
  readln;
end.

Bài đăng phổ biến