Đây là tuyển tập ngắn gọn các bài toán giải bằng lập trình với ngôn ngữ Pascal, tài liệu này chứa nhiều bài toán và nhiều bản code được trực quan hóa bằng lập trình đồ họa rất trực quan. Mời các bạn cùng tham khảo!
Các tập Pascal bản, KINH ĐIỂN, khó, RẤT KHÓ & RẤT THÚ VỊ (Đặc biệt phần GRAPHIC phần GRAPH THEORY ) PHẦN I- CÁC BÀI TOÁN CƠ BẢN A/ LẬP TRÌNH KHƠNG DÙNG CẤU TRÚC NÀO 1-Chỉ dùng phép nhân, tính a mũ 28 với không phép nhân (khi Test, bạn nên cho a=2) {Tinh a mu 28 chi dung khong hon phep nhan} Uses crt; var a,b:longint; Begin clrscr; Write('Nhap a='); Readln(a); a:=a*a; a:=a*a; Writeln('a mu 4=',a); b:=a; {luu a mu vao b} a:=a*a*a; Writeln('a mu 12=',a); a:=a*a; Writeln('a mu 24=',a); a:=a*b; Writeln('a mu 28=',a); Readln End 2- Cho sẵn xâu ký tự sau: Sách ToanA1 250000, Sách Ly 100000, Sách Anh van 150000, Sach Mach IC 80000 Hãy in lên tổng số tiền bán loại sách thuộc xâu nhập vào HẠN CHẾ CỦA BÀI TOÁN: Không dùng phép gán sau Tongsotienbansach:=250000+100000+150000+80000 phép gán tương tự khác để tính tổng tiền bán! Uses crt; Const s='GiaiTich2 250000, Vatly1 100000, Anh2 150000, MachIC 80000'; Var so1,so2,so3,so4:longint;k1,k2,k3,k4:integer; Begin Clrscr; Writeln('Xau cho truoc:',s); val('250000',so1,k1); val('100000',so2,k2); val('150000',so3,k3); val('80000',so4,k4); Writeln('= = = = = = = = = = = = ='); Write('Tong so tien ban cac loai sach:',so1+so2+so3+so4); Readln; End 3-Không dùng cấu trúc nào, so sánh hai số đọc từ bàn phím vào Thầy Trần Thông Quế (Bài kiểm tra hiểu biết hs cách dùng toán tử gán đồng thời với toán tử quan hệ dòng lệnh) Uses crt; Var a,b:integer; check1,check2,check3:Boolean; Begin clrscr; Write('a,b:'); Readln(a,b); check1:=a>b; check2:=a=-3.0) and (s1=-3.0) and (s2=-3.0) and (s3=-3.0) and (s4=1000 Begin Write('M'); n:=n-1000; End; If n>=900 then Begin Write('CM'); h 54 m 28/7/2017 Thầy Trần Thông Quế n:=n-900; End; If n>=500 then Begin Write('D'); n:=n-500; End; If n>=400 then Begin Write('CD'); n:=n-400; End; If n>=100 then Begin Write('C'); n:=n-100; eND; If n>=90 then Begin Write('XC'); n:=n-90; End; If n>=50 then Begin Write('L'); n:=n-50; End; If n>=40 then Begin Write('XL'); n:=n-40; End; If n>=20 then Begin Write('XX'); n:=n-20; End; If n>=10 then Begin Write('X'); n:=n-10; End; If n=9 then Begin Write('IX'); n:=n-9; End; If n>=7 then h 54 m 28/7/2017 Thầy Trần Thông Quế Begin Write('VII'); n:=n-7; End; If n>=5 then Begin Write('V'); n:=n-5; End; If n=4 then Begin Write('IV'); n:=n-4; End; If n=3 then Begin Write('III'); n:=n-3; End; If n=2 then Begin Write('II'); n:=n-2; End; If n=1 then Begin Write('I'); n:=n-1; End; Writeln; Writeln; Write(' ANOTHER TEST (Y/N)?'); Readln(ans); Until Ans In ['n','N']; End 8- (BÀI TOÁN NGƯỢC CỦA BÀI 7) Lập trình cho viết số Thập Phân tương ứng số La Mã đọc từ bàn phím vào Ví dụ vào: MMXVII, ra: 2017 (BÀI NÀY KHĨ HƠN BÀI TRÊN) Program LaMa_ThapPhan; Uses crt; Var s:string; Procedure Nhap; Begin Writeln; Write('Nhap vao so Lama:'); Readln(s); End; Function GtriThphan(s:string; i:integer):Integer; h 54 m 28/7/2017 Thầy Trần Thông Quế Var x:integer; Function Val(c:char):Integer; Begin Case c of 'M','m':Val:=1000; 'D','d':Val:=500; 'C','c':Val:=100; 'L','l':Val:=50; 'X','x':Val:=10; 'V','v':Val:=5; 'I','i':Val:=1; Else Val:=0; End; End; Begin x:=val(s[i]); If i=Length(s) Then GtriLama:=x Else If xb); If check then Write('(1+1/2016) mu 2017 lon hon (1+1/2017) mu 2016') Else Begin check:=(a=b); If check then Write('(1+1/2016) mu 2017 bang (1+1/2017) mu 2016') Else Write('(1+1/2016) mu 2017 nho hon (1+1/2017) mu 2016'); End; Readln; End 10- Không dùng thuật toán xử lý mảng 2-chiều, dùng biến đơn, lập trình in lên hình bảng ziczac chứa 100 số tự nhiên (Bạn có làm 10 phút không?) 0123456789 10 11 12 13 14 15 16 17 18 19 -90 91 92 93 94 95 96 97 98 99 KHÔNG THỂ CÓ CODE NÀO NGẮN HƠN CODE DƯỚI ĐÂY! Uses crt; Var i,j:Byte; Begin clrscr; For i:=0 to begin For j:=0 to Write(10*i+j:4); Writeln; end; Readln; End 11- Dùng ký tự '*', lập trình tạo tam giác cân rỗng In kết lên hình (Bạn có làm 10 phút không?) Uses Crt; Var chcao,i: Byte; Begin clrscr; Write('Nhap chieu cao tam giac:'); Readln(chcao); Writeln('*':chcao); For i:=2 to chcao-1 Writeln('*':chcao-i+1,'*':2*i-2); For i:=1 to 2*chcao-1 Write('*'); Writeln; Writeln; Readln; h 54 m 28/7/2017 Thầy Trần Thông Quế End 12- Nhập dãy số ngun từ bàn phím vào, lập trình tìm dãy (khơng kể thứ tự) số liên tiếp có tổng số M cho trước Uses Crt; Var a:array[1 1000] of integer; n,i,j,k,M:integer; Begin clrscr; Writeln; Write(#32:2,'M='); Readln(M); Write('n='); Readln(n); For i:=1 to n Begin Write('a[',i,']='); Readln(a[i]); End; Writeln('Cac bo so day thoa man yeu cau bai toan la:'); For i:=1 to n For j:=1 to n-1 For k:=j+1 to n if (ij) and (ik) and (jk) and (a[i]+a[j]+a[k]=M) then Writeln(a[i]:3,a[j]:3,a[k]:3) Readln; End 13- Lập trình tìm tất số hoàn hảo số n tùy ý đọc từ bàn phím vào Yêu cầu xuất kết theo Form sau: Chẳng hạn, Vào: 1200, Ra: Số hoàn hảo thứ nhất: Và ước là: ================= Số hoàn hảo thứ hai: 28 Và ước là: 14 ================= Uses crt; Var i,j,n,tong_uoc,dem:longint; tt:byte; Begin clrscr; Repeat Write('Nhap so nguyen duong n:'); Readln(n); dem:=0; For i:=1 to n Do Begin tong_uoc:=0; For j:=1 to i-1 Do If(i MOD j=0) Then tong_uoc:=tong_uoc+j; h 54 m 28/7/2017 Thầy Trần Thông Quế 10 If tong_uoc=i Then Begin dem:=dem+1; Writeln('* So hoan hao thu ', dem,' la:',i); Write('* va cac uoc so cua no la:'); For j:=1 to i-1 Do If (i MOD J=0) Then Write(j,' '); Writeln; Writeln('= = = = = = = = ='); Writeln; End; End; Write('More (1/0)? Come On -> Press 1; Stop -> Press 0:'); Readln(tt); Until tt=0; End *14- Kiểm tra giả thiết Goldbach – Snhirenman: “Mọi số tự nhiên CHẴN lớn biểu diễn TỔNG HAI số NGUYÊN TỐ” (Giả thiết Christian Goldbach – nhà toán học Đức – Nửa đầu kỉ XVIII, năm 1742 thư gửi Euler, Goldbach viết: “Mọi số lẻ viết dạng tổng ba số nguyên tố “ Sau mệnh đề gọi tốn Goldbach (hay giả thiết Goldbach) Hơn 250 năm toán Goldbach chưa chứng minh, năm 1930, nhà toán học Nga L G Snhirenman chứng minh trường hợp nhỏ giả thiết: “Mọi số chẵn n ≥ biểu diễn thành tổng số nguyên tố”) Uses crt; Var so1, so2, so3, so4: integer; kt1, kt2: boolean; {kt=kiem tra} hoi:char; Begin clrscr; Repeat Write(‘Nhap so chan so1>2:’); Readln(so1); so2:=2; Repeat so3:=so1-so2; so4:=2; While (so4sqrt(so2) then kt1:=true Else kt1:=false; so4:=2; While (so4sqrt(so3) then kt2:=true Else kt2:=false; Inc(so2); Until (so3