1. Trang chủ
  2. » Nghệ sĩ và thiết kế

Buoi4-CSLT-HDThucHanh

9 34 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Process: //Các bước viết chương trình – hàm main Bước 1: Khai báo các biến chương trình Bước 2: Nhập dữ liệu Bước 3: In lại chuỗi str1 đã nhập Bước 4: Tách chuỗi str1 thành chuỗi s theo [r]

(1)GỢI Ý BÀI THỰC HÀNH BUỔI SỐ Bài 25 (TH-CSLT-02): Viết chương trình nhập vào chuỗi ký tự Yêu cầu: - Cho biết các vị trí xuất ký tự x chuỗi ký tự vừa nhập Với ký tự x nhập từ bàn phím - Thay ký tự x chuỗi ký tự y Với ký tự x, y nhập từ bàn phím HƯỚNG DẪN CHI TIẾT A Input: s: chuỗi ký tự cần thực - x, y: ký tự B Output: - s: chuỗi đã nhập - vị trí xuất ký tự x chuỗi - s: chuỗi đã thay ký tự x ký tự y C Process: //Các bước viết chương trình – hàm main Bước 1: Khai báo các biến chương trình Bước 2: Nhập liệu Bước 3: In lại chuỗi s đã nhập Bước 4: Cho biết vị trí xuất các ký tự x chuỗi - Nhập ký tự x cần tìm vị trí xuất - Duyệt qua các ký tự xuất chuỗi s, kiểm tra ký tự đó có phải là ký tự x không? Nếu phải thì in vị trí đó cout<<“Vi tri xuat hien ky tu x:”; for(i=0; i< strlen(s); i++) if (s[i] == x) cout<<setw(4)<<i; Bước 5: Thay ký tự x ký tự y - Nhập ký tự x - Nhập ký tự y - Duyệt qua các ký tự xuất chuỗi, kiểm tra xem ký tự đó có phải là ký tự x không đúng thì gán giá trị ký tự y vào vị trí tương ứng xét for(i=0; i< strlen(s); i++) if (s[i] == x) s[i] = y; - In lại chuỗi s đã thay ký tự x thành ký tự y Ví dụ 1: Lần lượt nhập với yêu cầu sau: Nhap chuoi: Khoa cong nghe thong tin ð Kết qủa màn hình xử lý và in ra: Chuoi da nhap:Khoa cong nghe thong tin Nhap ky tu x: t Vi tri xuat hien ky tu x:15 21 Nhap ky tu x: t Nhap ky tu y: T Chuoi da duoc thay the:Khoa cong nghe Thong Tin (2) Bài 26 (TH-CSLT-03): Nhập vào chuỗi bất kỳ, sau đó hỏi người dùng cần tách chuỗi nào đó nhập vào từ bàn phím chuỗi trở sau Ví dụ: nhập chuỗi str1= “Khoa Công nghệ Thông tin, Viện Đại học Mở Hà Nội” Người nhập muốn tách chữ “Viện” thì xuất chuỗi “Viện Đại học Mở Hà Nội” màn hình HƯỚNG DẪN CHI TIẾT A Input: str1: chuỗi nhập vào - s1: chuỗi bắt đầu tách B Output: - str1: chuỗi nhập ban đầu - s2: chuỗi tách từ str1 chuỗi s1 C Process: //Các bước viết chương trình – hàm main Bước 1: Khai báo các biến chương trình Bước 2: Nhập liệu Bước 3: In lại chuỗi str1 đã nhập Bước 4: Tách chuỗi str1 thành chuỗi s theo yêu cầu - Nhập chuỗi s1 – chuỗi để bắt đầu tách - tìm vị trí xuất chuỗi s1 đầu tiên chuỗi str1 (nguyên tắc: so sánh vị trí ký tự từ vị trí xét chuỗi str1 với các vị trí chuỗi s1 giống hết thì lưu lại vị trí xét đó là vị trí xuất chuỗi s1 chuỗi str1) for(i=0; i<strlen(str1); i++) if ( str1[i] == s1[0]) { int kt = 1; for (j = 0; j<strlen(s1); j++) if(s1[j] != str1[i+j]) kt = 0; if ( kt == 1) vt = i; } - Tách chuỗi từ chuỗi str1 ban đầu vị trí tìm (vt) (tạo chuỗi để chứa các ký tự từ chuỗi str1 vị trí vt đã tìm trên) for( i = vt; i<strlen(str1); i++ ) s2[i-vt] = str1[i]; - In chuỗi s2 màn D Chạy thử với liệu Test sau: - Ví dụ 1: Lần lượt nhập với yêu cầu sau: Nhap chuoi: Khoa cong nghe thong tin ð Kết qủa màn hình xử lý và in ra: Chuoi da nhap:Khoa cong nghe thong tin Nhap muon bat dau tach: cong Chuoi duoc tach:cong nghe thong tin (3) Bài 27 (TH-CSLT-05): Nhập vào bài thơ gồm N câu thơ đặt các khổ thơ ngăn cách dòng trống (N nhập từ bàn phím) Yêu cầu: - Hiện bài thơ màn hình - Nhập vào số k (với điều kiện 1<= k <=số khổ bài thơ vừa nhập), khổ thơ thứ k màn hình - Nhập vào vần sA (VD: sA=“ưa”), các câu thơ có chứa vấn sA đó HƯỚNG DẪN CHI TIẾT (4) Bài 28 (TH-CSLT-07): Nhập vào từ bàn phím chuỗi ký tự và thực các yêu cầu sau: - Chuẩn hóa chuỗi ký tự (xóa các khoảng trắng thừa có chuỗi, các từ giữ lại ký tự trắng) - Cho biết từ có độ dài lớn có chuỗi và vị trí xuất chuỗi đó - Nhập vào từ bàn phím từ cần thay x và từ thay y Thay tất các từ gốc x có chuỗi từ y - Đảo ngược thứ tự các từ có chuỗi và in màn hình chuỗi sau đảo ngược HƯỚNG DẪN CHI TIẾT A Input: s: chuỗi nhập vào B Output: - s: chuỗi nhập ban đầu - s2: chuỗi tách từ str1 chuỗi s1 C Process: //Các bước viết chương trình – hàm main Bước 1: Khai báo các biến chương trình Bước 2: Nhập liệu Bước 3: In lại chuỗi s đã nhập Bước 4: Chuẩn hoá chuỗi ký tự - Xoá các khoảng trắng thừa -Nguyên tắc: xác định vị trí có dấu cách liên tiếp, thực dịch chuyển các ký tự từ vị trí đã xác định lên đầu dãy vị trí n = strlen(s); for( i = 0; i< n; i++ ) { if ( s[i] == ' ' && s[i+1] == ' ') { for( j = i; j<n; j++) s[j] = s[j+1]; s[n-1] = '\0'; } n = n-1; i = i - 1; } - in chuỗi s Bước 4: Cho biết từ có độ dài lớn chuỗi và vị trí xuất chuỗi đó -Nguyên tắc: duyệt từ đầu đến cuối chuỗi, gặp từ thì đếm độ dài từ đó đồng thời xác định xem từ đó có phải là từ dài số các từ đã xét không? Nếu đúng thì lưu lại vị trí và số ký tự từ - tìm vị trí bắt đầu từ dài chuỗi vt = 0; max = 0; n = strlen(s); for(i=0;i<n;i++) if(s[i-1]==' '&&s[i]!=' ') { int dem=0; for(j=i;j<n;j++) if(s[j]==' ') break; else { dem++; (5) } } if(dem>max) { vt=i; max = dem; } - in từ dài tìm ó từ vị trí vt và có độ dài là max cout<<"Tu dai nhat la:"; for(i=vt;i<vt+max;i++) cout<<s[i]; Bước 5: Nhập vào từ bàn phím từ cần thay x và từ thay y Thay tất các từ gốc x có chuỗi từ y Bước 6: Đảo ngược thứ tự các từ có chuỗi và in màn hình chuỗi sau đảo ngược -Nguyên tắc: Thực sinh chuỗi ban đầu rỗng s2, duyệt từ cuối chuối trở đầu, gặp dấu cách thì chép nội dung từ tìm vào chuỗi s2 Đồng thời xoá từ vừa xác định khỏi chuỗi Cuối cùng in lại chuỗi kết tạo -thực đảo ngược chuỗi char s2[100]=""; int i = strlen(s); while(i>0) { while(s[i]!=' '&&i>=0) i ; strcat(s2,&s[i+1]); strcat(s2," "); s[i]='\0'; } -In nội dung chuỗi s2 màn hình D Chạy thử với liệu Test sau: - Ví dụ 1: Lần lượt nhập với yêu cầu sau: Nhap chuoi: Khoa cong nghe thong tin ð Kết qủa màn hình xử lý và in ra: Chuoi da nhap:Khoa cong nghe thong tin Nhap muon bat dau tach: cong Chuoi tach tu vi tri xac dinh: cong nghe thong tin Chuoi co dai dai nhat:thong Dao nguoc tu: tin thong nghe cong (6) Bài 29 (TH-CSLT-01) Trong toán học, các số nguyên a và b (hai số khác 0), gọi là nguyên tố cùng [2] ước số chung lớn là Ví dụ, và 13 là nguyên tố cùng vì ước số chung lớn chúng là Hãy viết chương trình xác định 02 số (a, b) (được nhập từ bàn phím) có phải là số nguyên cùng hay không? Sau đó viết chương trình để thực việc nhập các số, kiểm tra và đưa thông báo tương ứng (có phải là số nguyên tố cùng không) Chú ý: cần viết thêm chương trình xác định ước số chung lớn để bổ trợ HƯỚNG DẪN CHI TIẾT A Input: a, b B Output: - “a và b là nguyên tố cùng nhau” “a và b không là nguyên tố cùng nhau” C xây dựng các chương trình con: Bước 1: CTC tìm ước chung lớn số int ucln(int a, int b) { while(a!=b) if(a>b) a = a-b; else b = b - a; return a; } Bước 2: CTC kiểm tra a và b có là nguyên tố cùng hay không? Nếu đúng nguyên tố cùng trả lại giá trị 1, ngược lại trả giá trị int kiemtraNT(int a, int b) { int d; d = ucln(a,b); if(d==1) return 1; else return 0; } C Process: //Các bước viết chương trình – hàm main Bước 1: Khai báo các biến chương trình Bước 2: Nhập liệu a và b Bước 3: Kiểm tra a và b có nguyên tố cùng if (kiemtraNT(a,b)==1) std::cout << "a va b la nguyen to cung nhau"<<endl; else std::cout << "a va b khong la nguyen to cung nhau"<<endl; D Chạy thử với liệu Test sau: - Ví dụ 1: Lần lượt nhập với yêu cầu sau: Nhap a: Nhap b: (7) ð Kết qủa màn hình in ra: a va b khong la nguyen to cung - Ví dụ 2: Lần lượt nhập với yêu cầu sau: Nhap a: Nhap b: ð Kết qủa màn hình in ra: a va b la nguyen to cung (8) Bài 30 (TH-CSLT-02): Viết hàm kiểm tra số nguyên có phải là số nguyên tố hay không? Áp dụng tính tổng các số nguyên tố nhỏ số n với n nhập vào từ bàn phím HƯỚNG DẪN CHI TIẾT A Input: n B Output: - tNT: tổng các số nguyên tố nhỏ số n C xây dựng các chương trình con: CTC kiểm tra số a có là nguyên tố hay không? Nếu nguyên tố trả lại 1, ngược lại trả lại int ktraSoNT(int a) { int kt=1,i; for(i=2;i<a;i++) if(a%i==0) kt = 0; return kt; } D Process: //Các bước viết chương trình – hàm main Bước 1: Khai báo các biến chương trình Bước 2: Nhập liệu n Bước 3: Tính tổng các số nguyên tố nhỏ n - s = 0; - Duyệt các số nguyên nhỏ n và gọi hàm kiểm tra số nguyên tố là số nguyên tố thì cộng số nguyên đó vào s for(i=2;i<n;i++) if(ktraNT(i) == ) s = s + i; - In giá trị s màn hình E Chạy thử với liệu Test sau: - Ví dụ 1: Lần lượt nhập với yêu cầu sau: Nhap n: 10 ð Kết qủa màn hình in ra: Tong cac so nguyen to nho hon n: 17 (Vì gồm các số nguyên tố: 2, 3, 5, 7) (9) Bài 32 (TH-CSLT-04): Thuật toán mã hóa Caesar thực cách thay ký tự ký tự khác cách nó k bước bảng chữ cái để tạo thành ký tự Hãy viết hàm nhận xâu s và bước dịch chuyển k (k>1), sau đó thực phép mã hóa trên để thu xâu ký tự (trong bảng mã ASCII) [3] Viết hàm gọi hàm mã hóa trên HƯỚNG DẪN CHI TIẾT A Input: s B Output: s: chuỗi gốc ban đầu s1: chuỗi đã mã hoá C xây dựng các chương trình con: CTC mã hoá chuỗi s với bước dịch chuyển là k Nguyên tắc: tạo chuỗi s1 với nội dung ban đầu là chuỗi s sau đó duyệt từ đầu đến cuối chuỗi s1 và thay ký tự vị trí tương ứng ký tự đố cộng thêm k giá trị string maHoaCaesar(string s,int k) { string s1; s1 = s; for( int i=0; i<s1.length(); i++ s1[i] = s1[i] + k; return s1; } C Process: //Các bước viết chương trình – hàm main Bước 1: Khai báo các biến chương trình Bước 2: Nhập chuỗi liệu s và nhập giá trị k Bước 3: In lại chuỗi s đã nhập Bước 4: Gọi hàm để mã hoá chuỗi s Bước 5: In lại chuỗi đã mã hoá D Chạy thử với liệu Test sau: - Ví dụ 1: Lần lượt nhập với yêu cầu sau: Nhap s: ABC Nhap k: ð Kết qủa màn hình in ra: Chuoi truoc ma hoa: ABC Chuoi sau ma hoa: CDE (10)

Ngày đăng: 17/12/2020, 14:16

w