logo

Soạn Tin học 11 Kết nối tri thức Bài 27: Thực hành thiết kế chương trình theo phương pháp làm mịn dần (trang 123, 126)

Hướng dẫn Soạn Tin học 11 Kết nối tri thức Bài 27: Thực hành thiết kế chương trình theo phương pháp làm mịn dần trang 123, 126 ngắn gọn, hay nhất theo chương trình Sách mới.

Bài 27: Thực hành thiết kế chương trình theo phương pháp làm mịn dần


1. Thiết kế thuật toán cho nhiệm vụ 1 với ý tưởng khác như sau: Dãy A là một hoán vị của dãy các số từ 1 đến n khi và chỉ khi dãy A có độ dài n và mọi số i từ 1 đến n đều nằm trong A.

Trả lời:

Output:

- Dãy A là một hoán vị của dãy các số từ 1 đến n khi và chỉ khi dãy A có độ dài n và mọi số i từ 1 đến n đều nằm trong A.

Input:

- Kết quả nhận được


2. Trong Nhiệm vụ 2, nếu dãy A đã được sắp xếp theo thứ tự tăng dần thì có thể cải tiến thuật toán tốt hơn được không?

Trả lời:

- Nếu dãy A đã được sắp xếp theo thứ tự tăng dần thì có thể cải tiến thuật toán tốt hơn


3. Cho dãy số A = A[0], A[1]. .... A[n — 1]. Thiết kế và viết chương trình kiểm tra trong dãy A có hai phân tử nào trùng nhau hay không. Cần đưa ra câu trả lời là “có” hay “không”. Yêu cầu đưa ra quy trình thiết kế theo phương pháp làm mịn dần.

Trả lời:

int find_index(int a[], int num_elements, int value)

{

int i;

for (i=0;

i<num_elements;

i++)

{

if (a[i] == value)

{ return(value);

}

} return(-1);

}


4. Cho dãy số A = A[0], A[1]. .... A[n - 1]. Thiết kế và viết chương trình kiểm tra trong dãy A có hai phân tử nào trùng nhau hay không. Cần đưa ra câu trả lời là “có” hay “không”. Yêu cầu đưa ra quy trình thiết kế theo phương pháp làm mịn dần.

Trả lời:

Quy trình thiết kế theo phương pháp làm mịn dần:

a. Phân tích bài toán:

- Input: Dãy số A = A[0], A[1], ..., A[n-1]

- Output: Có hay không phần tử nào trùng nhau trong dãy A

b. Thiết kế giải thuật:

- Sử dụng vòng lặp for để duyệt từng phần tử trong dãy A.

- Với mỗi phần tử A[i], ta so sánh với các phần tử trước đó A[0] đến A[i-1]. Nếu tìm thấy phần tử trùng lặp, đưa ra kết quả "CÓ" và thoát khỏi vòng lặp.

- Nếu duyệt hết dãy mà không tìm thấy phần tử trùng lặp, đưa ra kết quả "KHÔNG".

c. Triển khai giải thuật:

bool checkDuplicates(int A[], int n) {
   for (int i = 0; i < n; i++) {
       for (int j = 0; j < i; j++) {
           if (A[i] == A[j]) {
               return true; // tìm thấy phần tử trùng lặp
           }
       }
   }
   return false; // không tìm thấy phần tử trùng lặp
}

d. Kiểm thử:

- Test case 1: A = {1, 2, 3, 4, 5}, kết quả trả về là "KHÔNG".

- Test case 2: A = {1, 2, 3, 4, 5, 1}, kết quả trả về là "CÓ".

- Test case 3: A = {1, 1, 1}, kết quả trả về là "CÓ".

- Test case 4: A = {0, 0, 1, 2, 2, 2, 3, 4, 4, 5}, kết quả trả về là "CÓ".

- Test case 5: A = {}, kết quả trả về là "KHÔNG".

Giải thuật hoạt động chính xác cho tất cả các test case.


5. Xâu kí tự được gọi là đối xứng nêu thay đổi thứ tự ngược lại các kí tự của xâu thì vẫn nhận được dãy ban đầu. Ví dụ xâu “abcdcba" là đối xứng, còn xâu “1011” không là đối xứng. Thiết kế và viết chương trình kiểm tra một xâu kí tự cho trước có là đối xứng hay không. Yêu cầu đưa ra quy trình thiết kế theo phương pháp làm mịn dần.

Trả lời:

uses crt;

var st:string[100];

i,d,kt:integer;

begin

clrscr;

write('Nhap xau:'); readln(st);

kt:=0;

for i:=1 to length(st) do

if st[i]<>st[length(st)-i+1] then kt:=1;

if kt=0 then write('Xau doi xung')

else writeln('Xau khong doi xung');

readln;

end.

>>> Xem toàn bộ: Soạn Tin 11 Kết nối tri thức

-------------------------------------

Trên đây Toploigiai đã cùng các bạn Soạn Tin học 11 Kết nối tri thức Bài 27 trang 123, 126: Thực hành thiết kế chương trình theo phương pháp làm mịn dần trong bộ SGK Kết nối tri thức theo chương trình sách mới. Chúng tôi hi vọng các bạn đã có kiến thức hữu ích khi đọc bài viết này. Click vào trang chủ Toploigiai để tham khảo và chuẩn bị bài cho năm học mới nhé. Chúc các bạn học tốt!

icon-date
Xuất bản : 25/02/2023 - Cập nhật : 19/07/2023

Tham khảo các bài học khác