- Buớc 4:Nghiên cứu về lời giả
Bộ môn: PHƯƠNG PHÁP GIẢI BÀI TẬP PHỔ THÔNG
Sinh viên: Nguyễn Thị Thanh. Ngày sinh: 02/11/1986.
Lớp Tin 4B.
Học Pascal online, bài tập Pascal cơ bản nâng cao: Codepascal.blogspot.com
Đề bài: Lập trình:
• Nhập từ bàn phím hai số nguyên M và N (-32768 <= M, N <= 32768).
• Tính và đưa ra màn hình số lần xuất hiện của các chữ số có nghĩa của tổng M + N trong dạng biểu diễn thập phân. Kết quả đưa ra dưới dạng:
SO LAN XUAT HIEN CHU SO < chữ số > : < số lượng > Theo thứ tự tăng dần của các chữ số .
Ví dụ, với M = 309 và N = 21, kết quả đưa ra màn hình sẽ là: SO LAN XUAT HIEN CHU SO 0: 1.
SO LAN XUAT HIEN CHU SO 3: 2.
Giải:
* Bước 1: Tìm hiểu đề bài:
- Xác định Input: Nhập hai số nguyên M, N.
- Xác định Output: Tính và đưa ra số lần xuất hiện các chữ số của tổng M + N.
* Bước 2: Xây dựng ý tưởng giải thuật:
- Nhập vào giá trị cho hai biến M, N.
- Dúng một biến mảng để lưu các chữ số của tổng M + N, mảng đó sẽ chứa phần tử kiểu số thực từ 0 đến 9.
- Sử dụng biến t để lưu tổng M + N, và thực hiện kiểm tra đếm chữ số có trong tổng.
* Bước 3: Trình bày lời giải:
- Nhập vào các giá trị cho hai biến M, N. - Gán t : = M + N;
- Khai báo mảng a : array[0..9] of bytẹ
- Cho I chạy từ 1 tới 9 và thực hiện gán a[i] : = 0.
- Kiểm tra khi t > 0 thi thực hiện gán cs : = t mod 10 để lấy chữ số đầu tiên của tổng và tăng số lần xuất hiện của chữ số bằng inc(a[cs]), sau đó thực hiện gán lại tổng t : = t div 10.
- Kiểm tra a[i] <> 0 với i chạy từ 1 đến 9 để in số lần xuất hiện của chữ số trong tổng.
* Bước 4: Nghiên cứu về lời giải:
- Xây dựng chương trình: Program DEM_CHU_SO; Uses crt; Var t, i, cs, M, N: integer; a : array[0..9] of byte; Begin Clrscr;
Write(‘ Nhap gia tri cho M: ‘); Readln(M);
Write(‘ Nhap gia tri cho N: ‘); Readln(N);
For i : = 0 To 9 Do a[i] : = 0; t : = M + N;
While t > 0 Do Begin
- Trang 148 -
Học Pascal online, bài tập Pascal cơ bản nâng cao: Codepascal.blogspot.com
cs : = t mod 10; Inc (a[cs]); t : = t div 10; End; For i : = 0 To 9 Do If a[i] <>0 then
Writeln(‘ So lan xuat hien chu so ‘,i,’ trong tong la: ‘,a[i]); Readln;
End.
- Xây dựng lớp bài toán tưong tự:
Viết chương trình nhập vào một dãy 10 số nguyên khác nhau từng dôi một. Hãy chỉ ra độ dài của dãy con gồm các phần tử liên tiếp tăng mà có số phần tử nhiều nhất.( Xem HD trang 44 – Bài giảng NNLT Pascal)
Bài 6.20 ( Sách BT Tin học 11).
Đề bài:
Cho dãy số thực a = {a1, a2, a3,..., an }. Hãy mô tả thủ tục MINĂa, n, x,im) xác định x = Min{ai }, im - chỉ số nơi đạt min.
Ví dụ, với n = 8 và a = (5, 6, 8, 2, 4, 6, 9, 3), thủ tục nói trên sẽ cho kết quả x =2 và im = 4.
Giải:
* Bước 1: Tìm hiểu đề bài:
- Xác định Input: Nhập vào dãy số thực a = {a1, a2, a3,..., an }.
- Xác định Output: Giá trị nhỏ nhất x = Min{ai } của dãy và vị trí im của nó.
* Bước 2: Xây đựng ý tưởng giải thuật:
- Sử dụng mảng một chiều để lưu dãy số.
- Gán min bằng giá trị đầu tiên của mảng, và thực hiện so sánh với các phần tử còn lại của mảng để tìm ra phần tử nhỏ nhất của mảng.
- Có thể xây dựng ý tưởng bằng sơ đồ giải thật: F Gán min : = a[1] i : = 2 i <= n min > In ra min và vị trí i
Học Pascal online, bài tập Pascal cơ bản nâng cao: Codepascal.blogspot.com
T F
T
* Bước 3: Trình bày lời giải:
- Khai báo biến mảng a[i] để lưu dãy số thực. - Gán min : =a[1];
- Thực hiện so sánh min với các giá trị còn lại của mảng, nếu gia trị min lơn hơn thì thực hiện tăng i lên, ngược lại thì gán lại min : = a[i].
- Khi i > n thì in giá trị min và vị trí đó.
* Bước 4: Nghiên cưu lời giải: