Phương pháp giải bài tập Tin học

1. Tìm hiểu đề bài:  Dữ liệu vào: Không có.  Dữ liệu ra: Tệp văn bản FIBO.DAT gồm 45 dòng. Mỗi dòng là một số Fibonaccy. 2. Xây dựng ý tưởng giải thuật:  Sử dụng vòng lặp While Do  Sơ đồ khối của thuật toán:

doc196 trang | Chia sẻ: lylyngoc | Lượt xem: 6491 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Phương pháp giải bài tập Tin học, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Sinh viên: Trương Đức Khiêm Lớp: Tin 4B Phương pháp giải bài tập Tin học Bài tập 3.34 trang 24 sách Bài tập tin học 11. Bài tập 5.9 trang 59 sách Bài tập tin học 11. Bài tập 3.34: Tìm hiểu đề bài: Dữ liệu vào: Không có. Dữ liệu ra: Tệp văn bản FIBO.DAT gồm 45 dòng. Mỗi dòng là một số Fibonaccy. Xây dựng ý tưởng giải thuật: Sử dụng vòng lặp While… Do Sơ đồ khối của thuật toán: Trình bày lời giải: Mở rộng bài toán: Không có. {Do đến chương này học sinh mới chỉ được học những câu lệnh cơ bản.} Bài tập 5.9: Tìm hiểu đề bài: Dữ liệu vào: Số n là số tháng mà đoàn thám hiểm quay lại đảo. Dữ liệu ra: Số thỏ trên đảo sau n tháng. Xây dựng ý tưởng giải thuật: Dựa vào tính chất của dãy số Fibonacci. Sử dụng vòng lặp While… Do Sơ đồ thuật toán: Trình bày lời giải: Nghiên cứu về lời giải và mở rộng bài toán: Chương trình chỉ xác định được số thỏ trong vòng 45 tháng. Về lời giải trong sách bài tập: Thiếu chính xác! Lí do, trong lời giải khai báo kiểu phần tử của số Fibonaccy là Integer, nhưng phần tử thứ 24 của dãy số Fibonaccy có giá trị là 46368 đã vượt quá miền trị của kiểu Integer là . Cho nên, nếu nhập vào số tháng lớn hơn 23 thì sẽ cho kết quả 9489. Mở rộng bài toán: Cho số tự nhiên N và dãy số Fibonaccy: 1, 1, 2, 3, 5, 8, ...Hãy viết chương trình kiểm tra xem N có thể biểu diễn thành tổng của của các số Fibonaccy khác nhau hay không? Cách giải: Ta sẽ tìm số Fibonaccy gần với số N nhất. Đây sẽ chính là số hạng đầu tiên nằm trong dãy kết quả. Sau đó, lấy hiệu của số N và số Fibonaccy gần với số N nhất, tiếp tục tìm số Fibonaccy gần với hiệu trên và cứ thế cho đến khi hiệu đó là một số Fibonaccy. Kết quả các số Fibonaccy sẽ được liệt kê theo thứ tự từ lớn đến nhỏ. Sinh viên: Lê Thị Châu Long Lớp: Tin 4B Bài tập 3.38 trang 26 sách Bài tập tin học 11. Bài tập 5.11 trang 57 sách Bài tập tin học 11. Bài 3.38: Lập trình: Nhập từ bàn phím số thực a. Tìm và đưa ra màn hình số nguyên dương N nhỏ nhất thõa mãn Tìm hiểu đề bài: Input: Số thực A. Output: Số nguyên N nhỏ nhất thõa mãn Ý tưởng giải thuật: Trình bày lời giải Mở rộng bài toán: Lập trình: Nhập từ bàn phím số thực a. Tìm và đưa ra màn hình số nguyên dương N lớn nhất thõa mãn Bài 5.11: Cho tệp LINE.TXT, mỗi dòng không chứa một xâu không quá 255 kí tự. hãy lập trình tạo tệp LINE.DAT chứa các xâu ở tệp LINE.TXT, nhưng mỗi xâu đã được chuẩn hóa theo các quy tắc sau: Xóa tất cả các dấu cách đầu và cuối xâu. Nhiều dấu cách lien tiếp (nếu có) được thay bằng dấu cách duy nhất. Tìm hiểu đề bài: Input: Tệp LINE.TXT Output: Tệp LINE.DAT Ý tưởng giải thuật: Trình bày lời giải: Mở rộng bài toán: Cho tệp LINE.TXT, mỗi dòng không chứa một xâu không quá 255 kí tự. hãy lập trình tạo tệp LINE.DAT chứa các xâu ở tệp LINE.TXT, lưu các thông tin sau: Đếm các số các số nguyên có trong xâu. Tìm các số nguyên là số chẵn có trong xâu. Sinh viên: Nguyễn Thị Thanh Minh Lớp: Tin 4B Bài tập 3.41 trang 26 sách Bài tập tin học 11. Bài tập 5.14 trang 57 sách Bài tập tin học 11. Bài 3.41: Tìm hiểu bài toán: Input: Nhập thời gian: h giờ m phút s giây. Output: Trạng thái hiện tại là ngọn đèn hải đăng đang sáng hay tắt. Ý tưởng giải thuật: Bước 1: Nhập thời gian h giờ m phút s giây. Bước 2: Nếu hoặc hoặc thì quay lại bước 1. Bước 3: Nếu và thông báo đèn ở trạng thái tắt. Đến bước 5. Bước 4: Nếu thông báo đèn ở trạng thái tắt. Ngược lại thông báo đang sáng Bước 5: Kết thúc. Trình bày lời giải Nghiên cứu lời giải và mở rộng bài toán: Thời gian Trạng thái Giờ Phút Giây 19 30 15 Sáng 2 17 34 Tắt Xây dựng bộ test: Bài toán này còn có thể dùng để kiểm tra trạng thái của đèn với giá trị t1, t2 khác khi đó ta chia hiệu thời gian đó cho t1+t2 Bài 5.41: Tìm hiểu đề bài: Input: Tệp văn bản DUONGI.TXT. Output: Khoảng cách của nhóm so với trại. Ý tưởng giải thuật: Do chỉ cần biết được khoảng cách của nhóm so với trại nên ta gắn vào hướng đi của nhóm theo một hệ trục toạ độ: Gốc là trại, chiều dương trục Ox là hướng Đông, chiều dương trục Oy là hướng Bắc. Dùng biến tạm h để tính toạ độ của nhóm với quy ước rẽ trái h giảm đi 1, rẽ phải h tăng lên 1. Trình bày lời giải: Sinh viên: Phan Thi Hoa Lớp: Tin 4B Bài tập 3.29 trang 23 sách Bài tập tin học 11. Bài tập 7.37 trang 74 sách Bài tập tin học 11. Bài 3.29: Lập trình giải bài toán sau: Nhập 2 số nguyên a và b từ bàn phím( a<b). Xác định các số nguyên lẻ i thõa điều kiện a<i<b. Đưa ra màn hình số lượng tính được và bản thân các số lẻ này theo thứ tự tăng dần (mỗi số trên một dòng). Tìm hiểu đề bài: Input: Hai số a và b (a<b). Output: Số lượng các số nguyên lẻ i (a<i<b) và các số lẻ này được sắp xếp theo thứ tự tăng dần. Ý tưởng giải thuật: Bước 1: Nhập a, b (a<b) Bước 2: i:=a; d=0; Bước 3: Nếu i>b thi qua 5 Bước 4: Nếu i mod 2 =0 thi d=d+1 và in i tiếp tục tăng i =i +1; Bước 5: In d và kết thúc Trình bày lời giải: Xây dựng bộ test: Số a Số b Kết quả 5 41 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 19 15 43 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 15 7 30 7 9 11 13 15 17 19 21 23 25 27 29 12 Bài 7.37: Lập trình nhập số nguyên n (1<n<=100) và dãy số. Sử dụng thủ tục: Procedure hoan_doi(var x, y: integer); Var tg: integer; Begin Tg:=x; X:=y; Y:=tg; End; Sắp xếp lại các phần tử của p theo thứ tự không giảm. Đưa kết quả đã sắp xếp ra màn hình. Tìm hiểu đề bài: Input: Số n, dãy p. Output : Dãy p theo thứ tự tăng dần. Ý tưởng giải thuật: Bước 1: Nhập n và dãy p Bước 2: i:=0; Bước 3: Nếu i> n-1 thì chuyển qua 5 còn không thì j:=i+1 Bước 4: Nếu j<=n thì Nếu a[i]> a[j] thi gọi thủ tục hoan_doi(a[i], a[j]) j:=j+1 Quay lại bước 4 Bước 5: Ngược lại i:=i+1 Quay lại bước 3 Bước 6: In dãy sắp xếp p và kết thúc. Trình bày lời giải: Nghiên cứu lời giải và mở rộng bài toán: Xây dựng bộ test: Dữ liệu vào Kết quả n Dãy p 7 7 8 1 6 4 9 5 1 4 5 6 7 8 9 10 9 15 3 4 6 7 9 2 1 8 1 2 3 4 6 7 8 9 9 15 Mở rộng bài toán: Bổ sung một số vào dãy p mà vẫn giữ được trật tự sắp xếp… Sinh viên: Lê Thị Mai Lớp: Tin 4B Bài tập 3.39 trang 23 sách Bài tập tin học 11. Bài tập 5.12 trang 74 sách Bài tập tin học 11. Bài 3.39: Cho hai hinh chữ nhật có các cạnh song song với trục toạ độ và có toạ độ đỉnh là số nguyên. Mỗi hình chữ nhật được xác định bởi toạ độ đỉnh trên trái và toạ độ đỉnh dưới phải. Hãy viết chương trình xác định hai hình chữ nhật này có điểm chung hay không? Tìm hiểu đề bài: Input: Nhập các đỉnh của 2 hình chữ nhật Hình chữ nhật thứ nhất có đỉnh là: A(x, y), B(x, y); Hình chữ nhật thứ hai có đỉnh là: C(x, y), D(x, y); Output: Hai hình chữ nhật này có điểm chung hay không? Ý tưởng thuật toán: Ý tưởng: Hai hình chữ nhật có điểm chung thì có 4 trường hợp xảy ra: ((Ax<=Cx) and (Cx<=Bx)) and ((By<=Cy) and (Cy<=Ay)) ((Ax<=Dx) and (Dx<=Bx)) and ((By<=Cy) and (Cy<=Ay)) ((Ax<=Cx) and (Cx<=Bx)) and ((By<=Dy) and (Dy<=Ay)) ((Ax<=Dx) and (Dx<=Bx)) and ((By<=Dy) and (Dy<=Ay)) Nếu một trong 4 trường hợp đúng thì hai hình chữ nhật đó sẽ cắt nhau. Các bước thực hiện: Bước 1: Nhập các đỉnh của 2 hcn: A, B, C, D Bước 2: Kiểm tra điều kiện Nếu (( (Ax<=Cx) and (Cx<=Bx)) and ( (By<=Cy) and (Cy<=Ay))) or (( (Ax<=Dx) and (Dx<=Bx)) and ((By<=Cy) and (Cy<=Ay)))or (((Ax<=Cx) and (Cx<=Bx)) and ((By<=Dy) and (Dy<=Ay))) or (((Ax<=Dx) and (Dx<=Bx) ) and ((By<=Dy) and (Dy<=Ay))) thì In thông báo “Hai hcn đó cắt nhau” Ngược lại thì in thông báo “Hai hcn không cắt nhau” Bước 3: Kết thúc thuật toán. Trình bày lời giải: Mở rộng bài toán: Xác định tâm và bán của hình tròn nhỏ nhất chứa 2 hình chữ nhật trên. Bài 5.12: Thông tin về tình hình xuất khẩu gạo cả năm của công ty A được ghi trong tệp văn bản RICE.DAT, Mỗi loại gạo xuất khẩu ứng với một dòng 3 gía trị: Số lượng xuất, đơn giá và loại gạo, mỗi loại gạo có một tên riêng. Các gía trị được ghi cách nhau một dấu cách. Tệp chứa không qua một trăm dòng thông tin. Loại gạo Đơn giá (USD/Tấn) Số lượng xuất ( Tấn ) Xâu không quá 30 kí tự Số thực Nguyên dương không quá 2*109 Hãy lập trình đọc tệp RICE.DAT, tính và Đưa ra màn hình các thông tin sau: Tổng số tiền thu được từ xuất khẩu gạo Tên các loại gạo thu nhập cao nhất. Tìm hiểu đề bài: Input: Cho tệp RICE.DAT có Số lượng xuất, đơn giá, loại gạo. Tệp chứa không quá 100 dòng thông tin Output: Tổng số tiền thu được và tên các loại gạo thu nhập cao nhất. Ý tưởng thuật toán: Ý tưởng: Đọc tệp RICE.DAT Khi chưa phải cuối tệp thì tổng:= tổng + sl*dg So sánh sl*dg của các loại gạo và đưa ra kết quả. Các bước thực hiện: Bước 1: Gán tên tệp : assign(f, ’RICE.DAT’); Mở tệp : reset (f); Bước 2: Khởi gán n:=0 Nếu không phải cuối tệp thì Tăng biến n:=n+1; Đọc tệp: readln( f, a[n].sl, a[n].dg, a[n].lg); Bước 3: Tổng:=0; i:=0; Nếu i<=n thì Tổng:=Tổng + a[i].sl*a[i].dg; Tăng biến i:=i+1; Ngược lại thì Qua B5 Bước 4: Gán max:=a[1].sl*a[1].dg; Nếu i<=n thì Tăng i:=i+1 So sánh a[i].sl*a[i].dg > max thì hoán đổi Ngược lại Qua B5; Bước 5: In thông báo “tổng số tiền thu được”; So sánh nếu max = a[i].sl*a[i].dg thì in thông báo “Các loại gạo có thu nhập cao nhất”; Bước 6: Kết thúc thuật toán. Trình bày lời giải: Mở rộng bài toán:Hãy đưa ra tên các loại gạo cho thu nhập thấp nhất (Đơn giá*số lượng xuất là thấp nhất). Viết chương trình nhập thêm dữ liệu (Số lượng, đơn giá, loại gạo) vào trong tập tin “RICE.DAT” Họ và tên: Trương Thị Khánh Hà Lớp: Tin 4B Bài 3.27: Tìm hiểu đề bài: Input: Nhập m, n, k Output: Kiểm tra p là số có hơn 2 số có nghĩa và số hàng đơn vị bằng 0 không? Xây dựng ý tưởng giải thuật Tính tích p = m*n*k Kiểm tra các điều kiện: p > 99 p mod 10 = 0 Từ đó đưa ra kết luận p có phải là số có hơn hai chữ số có nghĩa và số hàng đơn vị bằng 0? Sơ đồ khối Trình bày lời giải Var m, n, k: interger; p: interger; Begin Repeat Write(‘ Nhập m, n, k:’); Readln( m, n, k); Until((m > 0) and(n > 0) and(k > 0)); p:=m*n*k; If p>99 then If p mod 10 = 0 then Writeln(p, ’là số có hơn 2 chữ số có nghĩa và số hàng đơn vị bằng 0’) Else Writeln(p, ’là số có hơn 2 chữ số có nghĩa và số hàng đơn vị khác 0’); Else Writeln(p, ’ là số không có hơn hai chữ số có nghĩa’); Readln; End. Nghiên cứu về lời giải m n k p=m*n*k Kết luận 4 5 6 120 p là số có hơn hai chữ số có nghĩa và hàng đơn vị bằng 0 2 3 1 6 p là số không có hơn hai chữ số có nghĩa 4 3 2 24 p là số không có hơn hai chữ số có nghĩa 4 7 4 112 p là số có hơn hai chữ số có nghĩa và hàng đơn vị khác 0 Bài 4.47: Mảng các bản ghi luôn có thể thay thế bằng 1 số mảng có kiểu phần tử chuẩn khác bản ghi. Với bảng Lop : array[ 1.. 60] of Hocsinh; Ta có thể thay thế như sau: - Điểm số thay thế bằng 7 mảng 1 chiều Var Điểm: array [0..10]of Real; Tin, toan, li, hoa, van, su, đia: Real; - Các trường khác mỗi trường ứng với 1 mảng Var Hoten: array[1..30] of String; Var Ngaysinh: aray[1..10] of String; Var Gioitinh: array[1..2] of Boolean; Sinh viên Lê Đức Chinh Lớp tin 4 B Bài tập Môn :PP GIẢI BÀI TẬP TRUNG HỌC PHỔ THÔNG. Bài 319(sbt trang 21): Cho ba số nguyên p, q, r(#0) .Kiểm tra ba số này, theo thứ tự nhập vào có tạo thành một cấp số nhân hay không. Viết chương trình thực hiện yêu cầu trên. Bước 1: Input: bộ ba số p, q, r Output: kiểm tra xem day p, q, r có là cấp số nhân không. Begin Bước 2: Sơđồ khối: Nhập p, q, r q/p=r/q Thông báo không phải Thông báo phải End. Bước 3:viết chương trình program bai319_bt11; var p, q, r:integer; Begin repeat writeln('nhap ba so nguyen p, q, r de kiem tra'); readln(p, q, r); until( q0) and( p0)and (r0); if q/p=r/q then writeln(p, ' ', q, ' ', r, ': la cap so nhan') else writeln(p, ' ', q, ' ', r, ': khong phai cap so nhan'); readln; end. Bước 4 Mở rộng cho hs giải các bài toán tương tự như kiểm tra cấp số cộng không, trong trường hợp lớn hơn 3 số làm thế nào? Xác định số hạng tiếp theo nếu đây là cấp số nhân (số cộng). Bài 440(sbt trang 45):Hãy lập trình -Nhập một xâu bất kì từ bàn phím. -Chuẩn hóa xâu theo quy tắc sau: +xóa các dấu cách ở đầu xâu nếu có; +xóa các dấu cách ở cuối xâu nếu có; +thay dãy nhiêu dấu cách liên tiếp bằng một dấu cách. -đưa kết quả đã chuẩn hóa ra màn hình. Bước 1: Input: nhập một xâu s Output:Đưa ra xâu s chuẩn .. Bước 2: B1.nhập xâu s; B2 .xóa trong xâu s đi 1 kí tự nếu có hai kí tự trắng liền nhau. B3 kiểm tra kí tự đầu và cuối nếu chúng là kí tự trắng thì xóa. B4.đưa lần lươt s[i] ra màn hình đến hết. B5. kết thúc Bước 3:viết chương trình program chuanhoaxau; var s:string; i:integer; Begin writeln('nhap vao mot xau '); readln(s); for i:=1 to length(s) do write(s[i]); while pos(' ', s)0 do delete(s, pos(' ', s), 1); if s[1]=' 'then delete(s, 1, 1); if s[length(s)]=' ' then delete(s, length(s), 1); writeln('xau sau khi duoc chuan hoa la '); for i:=1 to length(s) do write(s[i]); readln; end. Bước 4 Mở rộng cho hs giải các bài toán tương tự như kiểm tra có một từ cần tìm , bổ xung từ vào xâu, xóa một từ trong xâu. Đảo xâu..... HỌ VÀ TÊN : NGUYỄN VĂN TRUNG LỚP : TIN 4B BÀI TẬP MÔN : PHƯƠNG PHÁP GIẢI BÀI TẬP TIN HỌC PHỔ THÔNG TRUNG HỌC Bài 4.30 Bước 1 Xác định bài toán: - Input : Nhập các tọa độ của các đỉnh của các ô cửa số hiện trên màn hình của máy tính: A(X1, Y1), B(X2, Y2), C(X3, Y3), D(X4, Y4); - Output : Xác định số lượng K điểm ảnh bị che trên cửa sổ. Bước 2 Xây dựng ý tưởng giải thuật: - Xây dựng mảng để lưu các điểm ảnh được xác định tọa độ cột x và tọa độ hàng y. - Xây dựng các câu lệnh For –Do để đánh dấu các giao điểm của các cửa sổ. Bước 3 Giải thuật của bài toán: Program Xác_Định_Số_Giao_Điểm; Var x1, y1, x2, y2, x3, y3, x4, y4: Integer; S, I, j: integer; M: array[0..739, 0..1023] of byte; Begin Writeln(‘Nhập tọa độ các đỉnh:’); Write(‘x1’); Readln(x1); Write(‘y1’); Readln(y1); Write(‘x2’); Readln(x2); Write(‘y2’); Readln(y2); Write(‘x3’); Readln(x3); Write(‘y3’); Readln(y3); Write(‘x4’); Readln(x4); Write(‘y4’); Readln(y4); S:=0; For i:=0 to 739 Do For j:= 1 to 1023 Do M[i, j]:=0; For i:= x1 to x2 do For j:= y1 to y2 Do M[I, j]:=1; For i:= x3 to x4 Do For j:=y3 to y4 Do If M[I, j]=1 then inc(s); Writeln(‘Số điểm bị che là:’, s); End. Bài 7.17 Bước 1 Xác định bài toán: - Input: Nhập vào tọa độ các đỉnh của hình chữ nhật:A(xa, ya), C(xc, yc), E(Xe, Ye), G(Xg, Yg). - Intput: Xác định tọa độ tâm 0(X0, Y0) và tâm của hình tròn chứa hai hình chữ nhật trên. Bước 2 Xây dựng ý tưởng giải thuật: - Xây dựng hàm tính khoảng cách giữa hai điểm bất kỳ nào đó. - Lấy tọa độ trung điểm của hai điểm A(Xa, Ya) và G(Xg, Yg) và tọa độ này cũng chính là tọa độ tâm của hình tròn nhỏ nhất chứa hai hình chữ nhật trên. - Kiểu dữ liệu cần xây dựng là kiểu: Real; Bước 3 Giải thuật của bài toán: Program Hinh_tron. Var Xa, Xe, Ya, Ye, Xg, Yg, X0, Y0, X1, Y1, X2, Y2, Xc, Yc: Real; Function Khoang_cach(X1, X2, Y1, Y2:Real); Real; Begin Khoang_cach:=sqrt(sqr(X1-X2)+sqr(Y1-Y2)); End; Begin Writeln(‘Nhập tọa độ:’); Write(‘Xa’); Readln(Xa); Write(‘Ya’); Readln(Ya); Write(‘Xc’); Readln(Xc); Write(‘Yc’); Readln(Yc); Write(‘Xe’); Readln(Xe); Write(‘Ye’); Readln(Ye); Write(‘Xg’); Readln(Xg); Write(‘Yg’); Readln(Yg); X1:=Xa; Y1:=Ya; X2:=Xg; Y2:=Yg; X0:=(X1+X2)/2; Y0:=(Y1+Y2)/2; Writeln(‘Đường tròn tâm’, X0, Y0); Writeln(‘Bán kính’, Khoang_cach(X1, Y1, X2, Y2);’ Readln; End. PHƯƠNG PHÁP GIẢI BÀI TẬP Người soạn: Nguyễn Kính Doanh Lớp: Tin4B I.Đề bài: (Bài 3.23/Trang 22(SBTTH11)) Cho cấp số cộng a0, a1, a2, ……, ak, …. Trong đó ak=ak-1+d, k=1, 2…. Hãy viết chương trình : Nhập ba số nguyên a0, d, và b; Tìm và đưa ra màn hình số n nguyên không âm nhỏ nhất thoả mãn điều kiện an≥b. II.Phương pháp giải bài tập: Bước 1: + Input: a0, d, b a0, a1, a2, ……, ak, ….( ak=ak-1+d, k=1, 2….) + Output: giá trị n (n≥0 và an≥b) Bước 2: - Ý tưởng giải thuật: Kiểm tra giá trị b≤a[0] thì in ra màn hình giá trị n là 0 Kiểm tra nếu d≤0 và b>a[0] thì in ra màn hình không có giá trị của n. Sử dụng vòng lặp WHILE-DO để tìm phần tử a[i] có giá trị lớn hơn hoặc bằng b với a[i]=a[i-1]+d.. Kết thúc vòng lặp khi nào có giá trị a[i] ≥b và in ra màn hình giá trị n là giá trị của i. Sơ đồ khối: Bước 3: Trình bày lời giải Program bt; Type mang=array[0..100] of integer; var a:mang; i:integer; d, b:integer; Begin write('nhap a0 : ');readln(a[0]); write('nhap d, b: ');readln(d, b); if b<=a[0] then write('gia tri n la:0') else if (d<=0) then write(‘khong co gia tri n’); else begin i:=0; while (a[i]<b) do begin i:=i+1; a[i]:=a[i-1]+d; end; write('gia tri n la:', i); end; readln; end. Bước 4: + Xây dựng bộ TEST Bảng TEST: a[0] d b b<a[0] i a[i] a[i]<b 12 2 20 S 0 12 Đ 1 14 Đ 2 16 Đ 3 18 Đ 4=n 20 S *Giá trị n là : 4 + Xây dựng bài toán tương tự Bài toán: Cho cấp số cộng a0, a1, a2, ……, ak, …. Trong đó ak=ak-1+d, k=1, 2…. Hãy viết chương trình: Nhập vào a0, d. Tìm và đưa ra màn hình giá trị ak sao cho ak là số nguyên không âm lẻ đầu tiên của cấp số cộng . I.Đề bài: (Bài tập 4.43/trang 46(SBTTH11)) Hãy lập trình : Nhập từ bàn phím số nguyên dương N (1≤N≤20) và N số nguyên A1, A2, ......., AN. Đưa ra màn hình số lượng số Ai lẻ và bản thân các số Ai lẻ theo trình tự xuất hiện của chúng trong dãy đã nhập. Nếu trong dãy đã nhập không có số lẻ nào thì đưa ra màn hình kết quả là một số 0. II.Phương pháp giải bài tập: Bước 1: + Input: N(1≤N≤20) A1, A2, ….., AN. + Output: -Số lượng Ai lẻ. -Bản thân Ai. Bước 2: Ý tưởng giải thuật: - Gán d:=0 (d:đếm số lượng Ai lẻ); - Sử dụng vòng lặp FOR để duyệt từ A1 đến AN - Kiểm tra điều kiện Ai : + Nếu Ai chia 2 dư 1 thì in ra màn hình Ai và tăng biến đếm d lên 1. + Nếu không thì tăng i lên 1. - Sơ đồ khối : Bước 3: Trình bày lời giải: program bt43; type mang=array[1..50] of integer; var A:mang; N, i, d, j:integer; begin Repeat write('nhap N:');readln(N); Until ((N>=1) and (N<=20)); for i:=1 to N do begin write('A[', i, '] :');readln(A[i]); end; d:=0; for j:=1 to N do begin if A[j] mod 2 =1 then begin d:=d+1; write('so le thu ', d, 'la:', A[j]); readln; end; end; write('so luong so le la:', d); readln; end. Bước 4: - Xây dựng bộ TEST: + Mảng A gồm N=10 phần tử. A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 0 7 2 8 4 1 11 6 8 10 + Bảng Test. N i i>N A[i] A[i] mod 2 =1 d 25 10 1 S 0 S 0 2 S 7 Đ 1 3 S 2 S 1 Hoàng Thị Cẩm Tú Lớp: Tin 4b PHƯƠNG PHÁP GIẢI BÀI TẬP TIN HỌC Bài 4.31/42 ( sách bài tập tin học 11) Cho dãy số nguyên N (1<N<=50) và N số nguyên A1, A2, …A , trong đó có ít nhất 2 số 0. Hãy lập trình: • Nhập từ bàn phím số nguyên N và dãy A1, A2, …, A • Tính tổng các số Ai nằm giữa số 0 đầu tiên và số 0 cuối cùng và đưa kết quả ra màn hình. Nếu 2 số 0 này nằm cạnh nhau thì kết quả đưa ra sẽ là 0. Bước1: Tim hiểu đề bài Input: Nhập số nguyên N và dãy A1, A2, …, A (có ít nhất 2 số 0) Output: Tính tổng các số nằm giữa số 0 đầu tiên và số 0 cuối cùng Bước 2: Xây dựng ý tưởng giải thuật Tìm số 0 đầu tiên từ trái sang phải, số 0 thứ 2 từ phải sang trái, sau đó tính tổng. Bước 3: Trình bày lời giải Program tinhtong: Uses crt; Var s, i, j, k, n: integer; A: array[0..100] of integer; Begin Clrscr; Write(‘nhap so nguyen n’); Readln(n); for i:=1 to n do begin write(‘nhap mang A[‘, i, ’]=’); readln(A[i]); end; i:= 1; j:= n; while A[i] 0 do i:= i+ 1; while A[j] 0 do j:= j- 1; S:= 0; for k:= i to j do begin S:= S+ A[k]; k:= k+ 1; end; writeln(‘tong la:’, s); readln; End. Bước 4: Nghiên cứu về lời giải Xây dựng bộ test Cho dãy: 1 0 2 3 0 4 i:= 1 j:= 6 A[1] 0 ; i:= 2 A[2] = 0 A
Tài liệu liên quan